affichage sans répétitions
Salut,je suis novice en C et je veux afficher sans répétitions les entiers saisis.Mon problème c'est que le traitement n'a été vérifié que sur le premier élément du tableau.Voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| #include<stdio.h>
void main()
{
int i,n,j,k;
int t[100],v[100],repetition;
printf("Donner le nombre d'entiers à sasir\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Donner le %d%s entier:\n",(i+1),(i)?"eme":"er");
scanf("%d",&t[i]);
}
v[0]=t[0];
i=1;
k=1;
while(i<=n ||repetition==0)
{ j=i-1;
while(j>=0 || repetition==0)
{
if(t[i]!=t[j])
{
if(j==0)
{
v[k]=t[i];
k++;
}
}
j--;
if(t[i]==t[j])
repetition=1;
}
i++;
}
for(i=0;i<=k;i++)
printf("t[%d] est:%d\n",i,v[i]);
} |
Re: affichage sans répétitions
Citation:
Envoyé par devdébuto
Salut,je suis novice en C et je veux afficher sans répétitions les entiers saisis.Mon problème c'est que le traitement n'a été vérifié que sur le premier élément du tableau.Voici mon code:
Code:
1 2 3 4 5
|
Compiling: main.c
main.c:11: error: conflicting types for 'main_'
C:/clib/frmwrk/inc/main.h:36: error: previous declaration of 'main_' was here
main.c:51:2: warning: no newline at end of file |
A part ça, peux-tu expliquer quelle logique t'a fait écrire un tel code ? Où l'algorithme ?
Est-ce que la vrai façon de procéder n'est pas tout simplement de vérifier avant chaque saisie si le nombre saisi est déjà présent dans le tableau et ne l'ajouter que si il n'y est pas ?
Si tu arrives à comprendre cette phrase et à la traduire en algorithme puis en C, ton problème est résolu.
Nota : le bon forum pour les algos est "Algorithmes". Tu confonds Conception et Réalisation....
affichage sans répétitions
troumad a écrit:
Code:
1 2 6 6 8 4 5 5 6 3 2 1 1 9 6 => 1 2 6 8 4 5 6 3 2 1 9 6
Je veux plutôt avoir: (aucun chiffre ne doit se répéter!)
Re: affichage sans répétitions
Citation:
Envoyé par devdébuto
troumad a écrit:
Code:
1 2 6 6 8 4 5 5 6 3 2 1 1 9 6 => 1 2 6 8 4 5 6 3 2 1 9 6
Je veux plutôt avoir:
(aucun chiffre ne doit se répéter!)
Cet algo fonctionne...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
/*
initialiser le tableau a 'vide'
repeter
saisir une ligne
si la ligne est vide
terminer
fin si
convertir la ligne en entier
parcourir le tableau
si l'entier est absent et que le tableau n'est pas plein
Enregistrer l'entier
fin si
fin repeter
*/ |
Il produit par exemple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
9
8
5
5
6
7
4
3
1
0
2
full
9 8 5 6 7 4 3 1 0 2 |
Evidemment, à toi de coder le C...
affichage sans répétitions
Skyrunner a dit:
Code:
devdebuto serais-tu atteint de la maladie d'Alzheimer?
Non,je suis un petit peu amnésique.
affichage sans répétitions
Emmanuel Delahaye a écrit:
Code:
1 2 3 4
| Compiling: main.c
main.c:11: error: conflicting types for 'main_'
C:/clib/frmwrk/inc/main.h:36: error: previous declaration of 'main_' was here
main.c:51:2: warning: no newline at end of file |
Pourquoi mon compilateur me sort:
Code:
- 0 error(s), 0 warning(s)
Re: affichage sans répétitions
Citation:
Envoyé par devdébuto
Emmanuel Delahaye a écrit:
Code:
1 2 3 4
| Compiling: main.c
main.c:11: error: conflicting types for 'main_'
C:/clib/frmwrk/inc/main.h:36: error: previous declaration of 'main_' was here
main.c:51:2: warning: no newline at end of file |
Pourquoi mon compilateur me sort:
Code:
- 0 error(s), 0 warning(s)
ben ca depend des options de ton compilo
essai avec -Wall -Werror -ansi -pedantic et je pense que tu aura les meme erreurs que Emmanuel
Re: affichage sans répétitions
Citation:
Envoyé par devdébuto
Emmanuel Delahaye a écrit:
Code:
1 2 3 4
| Compiling: main.c
main.c:11: error: conflicting types for 'main_'
C:/clib/frmwrk/inc/main.h:36: error: previous declaration of 'main_' was here
main.c:51:2: warning: no newline at end of file |
Pourquoi mon compilateur me sort:
Code:
- 0 error(s), 0 warning(s)
Parce qu'il est mal réglé. Si tu as gcc :
Code:
-Wall -Wextra -O2 -ansi
En plus, je suis dans un mode un peu particulier "spécial forum", où je fournis un prototype à main()...
Ca ne pardonne pas !
(Tu remarqueras discretement que, ma fonction s'appelle main_() et non main(), héhé...)
Pour les curieux, le code complet est celui-ci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
/* frmwrk.c
Generic Framework for testing.
*/
#include "ed/inc/sysalloc.h"
#include "ed/inc/sys.h"
#include <stdio.h>
/* external user function */
int main_ (int argc, char *argv[]);
/* macros ============================================================== */
#define MODULE "FRMWRK."
#define OUT "out.txt"
#define ERR "err.txt"
/* constants =========================================================== */
/* types =============================================================== */
/* structures ========================================================== */
/* private variables =================================================== */
/* private functions =================================================== */
/* ---------------------------------------------------------------------
--------------------------------------------------------------------- */
static void onexit (void)
{
sys_mem_trace ();
STACK_PRINT ();
printf (MODULE "Termine\n");
#if defined (__BORLANDC__)
#elif defined (MINGWS)
#elif defined (CODEBLOCKS)
#elif defined (linux)
#else
system ("pause");
#endif
}
/* ---------------------------------------------------------------------
--------------------------------------------------------------------- */
static int is_opt (char const *sopt, int argc, char **argv)
{
int ok = 0;
int i;
for (i = 1; !ok && i < argc; i++)
{
if (strcmp (sopt, argv[i]) == 0)
{
ok = 1;
}
}
return ok;
}
/* entry points ======================================================== */
/* ---------------------------------------------------------------------
--------------------------------------------------------------------- */
int main (int argc, char *argv[])
{
STACK_INIT ();
STACK_CHK ();
{
static char Trace[1 << 11];
int trace = TRACE_OFF;
puts("Usage xxx[ /T][ /E][ /O][ <options application>]");
if (argc > 1)
{
if (is_opt ("/T", argc, argv))
{
trace = TRACE_ON;
argc --;
argv ++;
}
if (is_opt ("/E", argc, argv))
{
freopen (ERR, "w", stderr);
fprintf (stderr, "stderr trace start\n");
argc --;
argv ++;
}
if (is_opt ("/O", argc, argv))
{
freopen (OUT, "w", stdout);
printf ("trace start\n");
argc --;
argv ++;
}
}
#ifdef DBG_SYSALLOC
#ifdef __BORLANDC__
printf (MODULE "DBG_SYSALLOC is defined\n");
#elif __GNUC__
printf (MODULE "DBG_SYSALLOC=%d\n", DBG_SYSALLOC);
#else
#error undefined for this platform
#endif
#else
printf (MODULE "DBG_SYSALLOC is not defined\n");
#endif
atexit (onexit);
sys_mem_init (Trace, sizeof Trace, trace, NULL);
main_ (argc, argv);
}
return 0;
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
#ifndef H_ED_MAIN_20050825223136
#define H_ED_MAIN_20050825223136
#ifdef __cplusplus
extern "C"
{
#endif
/* main.h */
#define main main_
#ifndef DBG
#error DBG must be defined to 0 or 1
#endif
#if DBG
#include <assert.h>
#include <string.h>
#include "ed/inc/sysalloc.h"
#include "ed/inc/sys.h"
#include "ed/inc/str.h"
#undef assert
#define assert(e) ASSERT (e)
#define strdup(s) STR_dup(s)
#undef NELEM
#endif
#ifndef ARG
#error ARG must be defined to 0 or 1
#endif
#if ARG
int main_ (int argc, char **argv);
#else
int main_ (void);
#endif
#undef ARG
#undef DBG
#endif /* guard */
/* Guards added by GUARD (c) ED 2000-2005 Jul 14 2005 Ver. 1.8 */ |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
#if 1
#define DBG 1
#define ARG 0
#include "frmwrk/inc/main.h"
#endif
/* ---------------------------------------------------------------------- */
//#line 1
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
return 0;
} |
Ce qui manque est là :
http://emmanuel-delahaye.developpez.com/clib.htm
Re: affichage sans répétitions
Citation:
Envoyé par devdébuto
Skyrunner a dit:
Code:
devdebuto serais-tu atteint de la maladie d'Alzheimer?
Non,je suis un petit peu amnésique.
Fait pas le malin...
Re: affichage sans répétitions
Citation:
Envoyé par Emmanuel Delahaye
Parce qu'il est mal réglé. Si tu as gcc :
Code:
-Wall -Wextra -O2 -ansi
Les options de gcc m'interessent.
Je connaissais deja -Wall -ansi, et j'ai decouvert -O[0123], qui est interessante.
Par contre je n'ai pas trouve -Wextra dans la manpage de gcc.
Si toi ou quelqu'un d'autre pouvait eclairer ma lanterne a ce sujet...