voila j'ai un exercice sur les tableaux qui demande à éliminer les éléments nuls en les translatant vers soit la gauche ou la droite (comme on veut)
exemple :
{5,0,0,2,3,0,1} et le résultat devra être {5,2,3,1,0,0,0} ou alors {0,0,0,5,2,3,1}
voilà je pense que mon résonnement est correcte c'est que j'ai mis deux indices les élément nuls je les mets à la fin et les autre au début sauf que ça ne marche pas vraiment et c'est pour cela j'ai mis des printf un peu partout pour comprendre le fonctionnement sauf que rien et là je fais appel a vous merci encore
#include <stdio.h>
int main ()
{
int t1[7] = {5,0,0,9,3,0,1};
int t2[7] = {0};
int i=0,j=0;
j=6;
i=0;
while (i<7)
{
printf("i=%d\n", i);
if(t1[i] != 0)
{
t2[j] = t1[i];
j--;
printf("t2[j]=%d\n", t2[j]);
}
else
{
printf("j1=%d\n",j );
t2[i] = t1[i];
printf("t2[i]=%d\n", t2[i]);
printf("j2=%d\n",j );
}
i++;
}
for(i=0; i<7 ; i++)
printf("%7d",t2[i] );
return 0;
}
beh non on enlevant le else ça na rien changé et en plus ce n'est pas ça le résultat 0,0,01,3,9,5 le ésultat devra être 5,9,3,1,0,0,0 ou alors 0,0,0,5,9,3,1 c'est ça
bonjour Robun, je ne faisait que répondre à edgarjacobs, encore une fois je vais présenter la problématique, c'est un tableau contenant des nombres et des zéros l'objectif est de translater les zéros soit a la droite soit a la gauche exemple :
{5,0,0,9,3,0,1} deviendra {5,9,3,1,0,0,0} ou bien {0,0,0,5,9,3,1} voilà c'est la problèmatique sauf que je n'obtient pas le résultat voulu avec mon programme et là je fais appel a vous pour m'aider merci
Par rapport à ton code initial, comme l'a dit Edgarjacobs il faut enlever le blocs else, mais ce n'est pas tout.
Explications de ton code sans le blocs else seulement
t1 = [1,0,2] t2 = [0,0,0]
pour i = 0 et i = 1 t2 = [0,0,1]
pour i = 2 t2 = [0,2,1]
Supprimes les lignes 10 et 11 et modifie la ligne 18 en j++. Ou initialise i et j à 6 tous les deux (et adaptes ton code en fonction du parcours du tableau).
j'ai rien compris a ce que vous venez d'écrire en fait le t2 je l'ai juste initialisé avec zéro car souvent quand je le fait pas je me retrouve avec des valeurs un peu bizarre c'est tout le principe est que on translate les nombres dans l'ordre dans le quels ils le sont mais je vous remercie d'avoir essayer de m'aider
Bon j'ai bien compris votre énoncé maintenant si vous ne savez pas lire les consignes qu'on vous donne ce n'est pas de ma faute.
Voilà ce que j'ai voulu dire :
Lecture de droite à gauche
#include <stdio.h>
int main (){
int t1[7] = {5,0,0,9,3,0,1};
int t2[7] = {0};
int i=6,j=6;
for (i = 6; i >= 0; i--){
printf("i=%d\n", i);
if(t1[i] != 0){
t2[j] = t1[i];
j--;
printf("t2[j]=%d\n", t2[j]);
}
}
for(i=0; i<7 ; i++)
printf("%7d",t2[i]);
return 0;
}
Lecture de gauche à droite
#include <stdio.h>
int main (){
int t1[7] = {5,0,0,9,3,0,1};
int t2[7] = {0};
int i=0,j=0;
for (i = 0; i < 7; i++){
printf("i=%d\n", i);
if(t1[i] != 0){
t2[j] = t1[i];
j++;
printf("t2[j]=%d\n", t2[j]);
}
}
for(i=0; i<7 ; i++)
printf("%7d",t2[i] );
return 0;
}
Maintenant pour ce genre d'exercice bateau, je vous conseille de poser d'abord sur papier ce que vous souhaites avoir, le modéliser étape par étape (pour i = 0 je dois avoir ... pour i = 1 je dois avoir etc...) puis transcrire votre itération en code.
Bonne journée.
- Edité par florentpalanque 15 décembre 2018 à 15:20:46
En général, quand un exercice demande de modifier un tableau, il s'agit 1. de créer une fonction; 2. de modifier le tableau passé en paramètre sans en créer un nouveau.
bonsoir a vous tous je voulais vous remercier d'avoir pris de votre temps et me répondre et merci a toi florentpalanque j'ai suivi vos conseil et j'ai eu le même rendu sans même regarder la solution encore merci a vous tous
les tableaux en c
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Make it simple.
Make it simple.