Tableau :/ - C - Programmation
Marsh Posté le 09-01-2013 à 09:54:09
Et c'est à rendre pour demain, ou cet après-midi, j'imagine ?
Marsh Posté le 09-01-2013 à 12:23:09
Ben explique nous l'algorithme que tu envisages d'utiliser et on t'aidera à écrire le code.
Parce que pour un problème aussi simple, si tu n'es pas capable de trouver par toi même une méthode pour résoudre ce problème, je ne vois pas ce qu'on pourra faire pour toi.
A+,
Marsh Posté le 09-01-2013 à 12:24:31
j'ai fait ça :
#include<stdio.h>
int main()
int T1[50],T2[60],i,j,n,b,aux ;
do{
printf(saisir n);
scanf(%d,&n);
}while(n<1||n>50);
do{
printf(saisir b);
scanf(%d,&b);
}while(b<1||b>50);
for(i=0,i<n,i++){
do{
printf(saisir T1[%d],i);
printf(%d,T1[i]);
}while(T1[i]<0||T1[i]>9);
}
for(j=0,j<b,j++){
do{
printf(saisir T2[%d],j);
printf(%d,T2[j]);
}while(T2[j]<0||T2[j]>9);
}
i=0 ;
while(i<n){
j=0;
while(j<b&&T1[i]!=T2[j]){
j++;}
aux=T2[j]
i++;}
.....
svp si c'est juste comment afficher à la fin que par exemple 0 est un nombre commun au deux tableaux..... Merci d'avoir pris la peine de lire et de répondre
Marsh Posté le 09-01-2013 à 12:28:39
merci gilou t a raison mais j'ai l'idée : que pour chaque case du tableau 1 on va parcours le tableau 2, si on trouve commun , il faut le supprimer pour ne plus être testée dans les itérations suivantes. !!
Marsh Posté le 09-01-2013 à 13:05:16
dans la mesure où tu sais que les nombres vont de 0 à 9, tu peux faire un tableau supplémentaire int tester[10], initialiser à 0 et tu mets tester[i]=1 si tu trouves le chiffre i dans un tableau t1 et que tu as testé sa présence dans t2.
De cette façon si tu retrouve i dans t1, tu n'as pas besoin de reparcourir t2 car tu aura déjà testé sa présence.
Marsh Posté le 09-01-2013 à 13:09:37
i=0 ;
while(i<n){
j=0;
while(j<b&&T1[i]!=T2[j]){
j++;}
T2[j]=-1
i++;
printf("%d est commun au deux tableau",T[i]);
}
return 0;
}
je pense que ça est juste merci pour votre réponse ^_^
Amina
Marsh Posté le 09-01-2013 à 13:11:38
Bon, en remettant ça au propre, je suppose que c'est ce que tu voulais poster:
Code :
|
Ça va pas marcher, puisque tu as confondu les , avec les ; dans les for(...) et aux = T2[j] n'a pas de ; en fin de ligne.
Aérer le code avec des espaces, ça le rend bien plus lisible.
Utiliser de préférence ++j que j++ quand il n'y a pas de différence, et ne réserver l'emploi de j++ qu'aux cas ou ça a un sens spécial de l'utiliser.
J'ai pas non plus vu les accolades de main(), mais je les ai rajoutées.
C'est pas une mauvaise idée, de faire comme tu as fait, mais c'est compliqué, et donc pas efficace: Si le premier tableau est de taille n et le second tableau de taille m, tu vas parcourir n fois le second tableau, au total tu auras été lire n * m cases. Si tes tableaux sont grands, ça peur être long (qques micro-secondes )
Comme tu sais que tu n'as que 10 chiffre, ce que tu peux faire, c'est créer un tableau 'des chiffres' de 10 cases, et mettre une indication selon que le chiffre est dans le premier ou le second tableau, ou les deux.
- tu met le tableau de chiffres à 0
- tu parcours le premier tableau, pour chaque chiffre que tu trouves, tu met la case du 'tableau de chiffres' correspondante à 1.
Maintenant, le 'tableau de chiffres' a des cases a 1 pour les chiffres qui sont dans le 1er tableau et a 0 pour ceux qui n'y sont pas
- tu parcours le second tableau, pour chaque chiffre que tu trouves, tu ajoutes 2 à la case du 'tableau de chiffres' correspondante si sa valeur est 0 ou 1.
Maintenant, le 'tableau de chiffres' a des cases a:
- 3 pour les chiffres qui sont dans les deux tableaux
- 2 pour les chiffres qui ne sont que dans le 2e tableau
- 1 pour les chiffres qui ne sont que dans le 1e tableaux
- 0 pour les chiffres qui ne sont dans aucun
Tu parcours le tableau de chiffres, et si la valeur est 3 tu imprimes le chiffre
A+,
Marsh Posté le 09-01-2013 à 13:17:08
on nous demande d'afficher des couples des nombres commun donc de ce cas je pense que le truc d'un nouveau n'est pas valable !?
Marsh Posté le 09-01-2013 à 13:25:08
et pour mon résonnement j'ai corrigé le truc "aux" par ce que "aux" va pas supprimer la valeur .. donc il faut le donner une valeur différente des éléments du tableau par exemple -1 ou un nombre >9 ...... MERCIIIII BCPPP gilou c'est très gentille de ta part d'avoir consacré un peut de temps pour l'exo merci .....
une question svp est ce que "printf" peut arrêté le programme qu'on il sera dans la boucle ou bien arrête t il le programme le programme à l'extérieur d'une boucle .... est ce qu'il ne peut pas arrette un programme ... n'a pas la même utilisation que return pour les fonction ????
Marsh Posté le 09-01-2013 à 13:57:09
Bonjour, vue les contrainte je ferait comme ça mais obivious).
0) je lis la longueur du tableau Longueur_1
1) j'initialise le tableau Tableau_Initial[Longueur]
3) je lis la longueur du tableau Longueur_2
4) pour I allant de 0 à Longueur - 1,
Je saisie l'élément I du tableau
pour J allant de 0 à Longueur 1
si l'élément = Tableau_Initial[j]
affichge_du_couple
/* Efacement de l'élément */
si j < Longueur
pour k allant de j+1 à Longueur_1
Tableau_Initial(k-1) <- Tableau_Initial(k);
Longueur_1 <- Longueur_1 - 1;
break;
Marsh Posté le 09-01-2013 à 14:06:38
Citation : est ce que "printf" peut arrêté le programme |
Uniquement s'il plante
printf, il fait ce qu'on lui demande: afficher du texte formaté, puis il a fini.
S'il y a plus de code a exécuter ensuite, ton programme s’arrête naturellement.
Comme main a pour prototype int main(), il vaut mieux faire un return 0 pour être plus correct.
A+,
Marsh Posté le 09-01-2013 à 20:30:07
Je l'ai implémenté.....
Code :
|
Marsh Posté le 09-01-2013 à 01:35:49
Bonjour,
svp j'ai besoin d'aide ... je suis vraiment bloqué ; je n'arrive pas à trouver la solution de cette exo
Ecrire un programme qui permet d'afficher des couples des nombres commun entre deux tableau d'entier de valeur allant de 0 à 9.
Par exemple: *Tableau 1 :0/2/9/7/2/7
*Tableau 2 : 9/2/3/0/1/2
Affichage: 0,9,2,2 sont commun au deux tableau .
merci d'avance