affichage sans répétitions
je veux écrire un programme qui permet de saisir un ensemble d'entiers puis de les afficher sans répétions.Voici comment j'ai débuter:
(Quelqu'un pourrait il m'aider dans l'affichage?)
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
| #include<stdio.h>
void main()
{
int t[100],v[100],i,n,j,k;
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]);
}
/*Comparer chaque élément avec les éléments qui précédent */
i=1;
while(i<n )
{
for(j=0,k=0;j<i;j++)
{ /*mettre les indices des éléments qui se répétent dans un tableau*/
if(t[i]=t[j])
v[k]=j;
k++;
}
i++;
} |
affichage sans répétitions
Citation:
Envoyé par Skyrunner
ce qui se voit rien qu'en lisant le code il y a un paquet d'erreur
Est-ce que vous pouvez me corriger ?
Re: affichage sans répétitions
Citation:
Envoyé par devdébuto
Skyrunner a dit:
Code:
ce qui se voit rien qu'en lisant le code il y a un paquet d'erreur
Est-ce que vous pouvez me corriger ?
Ca, déjà...
Code:
1 2 3 4 5
|
main.c:3: warning: return type of 'main' is not `int'
main.c: In function `main':
main.c:19: warning: suggest parentheses around assignment used as truth value
main.c:25: error: syntax error at end of input |
En rendant le code un peu plus sûr et en l'instrumentant :
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
| #include<stdio.h>
int main(void)
{
#define N 10
int t[N]={0},v[N]={0},i,n,j,k;
int rc;
do
{
printf("Donner le nombre d'entiers a saisir\n");
rc = scanf("%d",&n);
if (rc != 1)
{
getchar();
}
else if (rc==EOF)
{
break;
}
}
while (n >N && rc != 1);
if (rc == 1)
{
for(i=0;i<n;i++)
{
printf("Donner le %d%s entier:\n",(i+1),(i)?"eme":"er");
rc = scanf("%d",t+i);
if (rc != 1)
{
getchar();
}
else if (rc==EOF)
{
break;
}
}
if (rc==1)
{
/*Comparer chaque élément avec les éléments qui précédent */
i=1;
while(i<n )
{
for(j=0,k=0;j<i;j++)
{ /*mettre les indices des éléments qui se répétent dans un tableau*/
if(t[i]==t[j])
v[k]=j;
k++;
}
i++;
}
}
}
if (rc==1)
{
printf ("t[] : ");
for (i=0; i < n; i++)
{
printf ("%5d", t[i]);
}
printf ("\n");
printf ("v[] : ");
for (i=0; i < n; i++)
{
printf ("%5d", v[i]);
}
printf ("\n");
}
return 0;
} |
on constate que le comportement n'est pas celui attendu...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
Donner le nombre d'entiers a saisir
5
Donner le 1er entier:
1
Donner le 2eme entier:
3
Donner le 3eme entier:
2
Donner le 4eme entier:
3
Donner le 5eme entier:
5
t[] : 1 3 2 3 5
v[] : 0 1 0 0 0 |
affichage sans répétitions
Bon voila,j'ai complété mon code,j'ai compilé(y a pas de fautes syntaxiques).
Mais je n'arrive pas toujours à la solution.
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
| #include<stdio.h>
void main()
{
int t[100],v[100],i,n,j,k;
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]);
}
/*Comparer chaque élément avec les éléments qui précédent */
i=1;
while(i<n )
{
for(j=0,k=0;j<i;j++)
{ /*mettre les indices des éléments qui se répétent dans un tableau*/
if(t[i]==t[j])
v[k]=i;
k++;
}
i++;
}
for(i=0,k=0;i<n;i++)
if(i!=v[k])
{
printf("t[%d] est:%d\n",i,t[i]);
k++;
}
} |
Re: affichage sans répétitions
Citation:
Envoyé par devdébuto
Bon voila,j'ai complété mon code,j'ai compilé(y a pas de fautes syntaxiques).
Mais je n'arrive pas toujours à la solution.
Normal. Visiblement, ton algoritme n'est pas bon. Commence déjà par traduire l'énoncé en algorithme, sinon, on y est encore dans 3 jours...
Le codage, c'est la phase 3 (production). Tu ne peux pas faire l'économie de la phase 2 (conception) quelle que soit la taille du projet...
Rappel :
1 - Définition
2 - Conception
3 - Production
4 - Intégration
5 - Validation