Programme en c probleme de boucles
Fermé
heno
-
23 mars 2008 à 20:37
vlmath Messages postés 794 Date d'inscription vendredi 20 octobre 2006 Statut Contributeur Dernière intervention 4 septembre 2011 - 24 mars 2008 à 11:04
vlmath Messages postés 794 Date d'inscription vendredi 20 octobre 2006 Statut Contributeur Dernière intervention 4 septembre 2011 - 24 mars 2008 à 11:04
A voir également:
- Programme en c probleme de boucles
- Programme demarrage windows 10 - Guide
- Désinstaller programme windows 10 - Guide
- Mettre en veille un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Forcer la fermeture d'un programme - Guide
3 réponses
vlmath
Messages postés
794
Date d'inscription
vendredi 20 octobre 2006
Statut
Contributeur
Dernière intervention
4 septembre 2011
160
23 mars 2008 à 21:41
23 mars 2008 à 21:41
Salut,
Il y a plusieurs fautes ....
Le premier problème est le fait que nb est uniquement une variable, et non un tableau de variable ; ça implique que quand tu fais une affectation, la valeur précédente est supprimée ... et c'est pas exactement ce que tu veux je crois ...
Le deuxième problème vient de ceci (sans compter avec le fait que nb n'est pas un tableau) :
La boucle devrait commencer à 1, du fait que t'as déjà printer le premier (toujours un imaginant que tu mettes un tableau...).
Il y a un problème avec cette boucle :
La condition de boucle n'est pas bonne : tu dois boucler tant que cpt est suppérieur ou égal à 0 => cpt<=0
Cette condition n'est pas bonne non plus :
nb/2 ne peut jamais être nul, sauf si nb vaut 0. Tu dois mettre :
Cette ligne contrôle que le reste de la division de nb par 2 vaut 0 (c'est le modulo en mathématique).
Une fois que t'auras remplacé nb par un tableau, il te faudras mettre deux boucles de parcours pour dire si c'est paire ou impaire, et pas implement une condition avec un else ; la première print le nombre s'il est paire, et passe à la suite s'il est impaire, et respectivement le contraire pour la deuxième boucle.
En esspérant avoir pu t'aider un peu ...
Si t'as des questions, n'hesite surtout pas ...
@Bientôt
Il y a plusieurs fautes ....
Le premier problème est le fait que nb est uniquement une variable, et non un tableau de variable ; ça implique que quand tu fais une affectation, la valeur précédente est supprimée ... et c'est pas exactement ce que tu veux je crois ...
Le deuxième problème vient de ceci (sans compter avec le fait que nb n'est pas un tableau) :
printf("\n*****Resultats \n Vos chiffres dans l'ordre : %d", nb); for ( cpt= 0; cpt< NB_MAX; cpt++) { printf(" , %d", nb); }
La boucle devrait commencer à 1, du fait que t'as déjà printer le premier (toujours un imaginant que tu mettes un tableau...).
Il y a un problème avec cette boucle :
printf("\nVos chiffres dans le desordre : %d", nb); for ( cpt= 10; cpt< NB_MAX; cpt--) { printf(" , %d", nb); }
La condition de boucle n'est pas bonne : tu dois boucler tant que cpt est suppérieur ou égal à 0 => cpt<=0
Cette condition n'est pas bonne non plus :
if (nb=2 || nb/2==0)
nb/2 ne peut jamais être nul, sauf si nb vaut 0. Tu dois mettre :
if( nb%2 == 0 )
Cette ligne contrôle que le reste de la division de nb par 2 vaut 0 (c'est le modulo en mathématique).
Une fois que t'auras remplacé nb par un tableau, il te faudras mettre deux boucles de parcours pour dire si c'est paire ou impaire, et pas implement une condition avec un else ; la première print le nombre s'il est paire, et passe à la suite s'il est impaire, et respectivement le contraire pour la deuxième boucle.
En esspérant avoir pu t'aider un peu ...
Si t'as des questions, n'hesite surtout pas ...
@Bientôt
Bonsoir,
tu veux écrire un programme avec parametre d'entrée un tableau mais je ne vois pas ce tableau ni la methode en paramettre un tableau.
Voici un exemple:
#include <stdio.h>
typedef int composante;
void lecture(composante *t,int *nb)
{
int i;
puts("nombre de valeurs à entrer ? ");
scanf("%d",nb);
for(i=1;i<=*nb;i++)
{
printf("%dième valeur : ",i);
scanf("%d",t++);
}
}
void affiche(composante *t, int max)
{
int i;
for(i=0;i<max;i++) printf("%d ",*t++);
puts(" ");
}
void decale_bas(composante *deb, int max)
{
composante c,*t;
t=deb+(max-1);
c=*t;
while (t>deb) {*t=*(t-1);t--;}
*t=c;
}
void decale_haut(composante *t, int nb)
{
composante c;int i;
c=*t;
for (i=1;i<nb;i++) {*t=*(t+1);t++;}
*t=c;
}
void main(void)
{
composante tableau[10];
int nombre;
lecture(tableau,&nombre);
puts("tableau initial :");
affiche(tableau,nombre);
decale_haut(tableau,nombre);
puts("décalage vers le haut :");
affiche(tableau,nombre);
decale_bas(tableau,nombre);
puts("décalage vers le bas :");
affiche(tableau,nombre);
}
void decale_haut(composante *t, int nb)
{
composante c;int i;
c=*t;
for (i=1;i<nb;i++) {*t=*(t+1);t++;}
*t=c;
}
Bon courage!
tu veux écrire un programme avec parametre d'entrée un tableau mais je ne vois pas ce tableau ni la methode en paramettre un tableau.
Voici un exemple:
#include <stdio.h>
typedef int composante;
void lecture(composante *t,int *nb)
{
int i;
puts("nombre de valeurs à entrer ? ");
scanf("%d",nb);
for(i=1;i<=*nb;i++)
{
printf("%dième valeur : ",i);
scanf("%d",t++);
}
}
void affiche(composante *t, int max)
{
int i;
for(i=0;i<max;i++) printf("%d ",*t++);
puts(" ");
}
void decale_bas(composante *deb, int max)
{
composante c,*t;
t=deb+(max-1);
c=*t;
while (t>deb) {*t=*(t-1);t--;}
*t=c;
}
void decale_haut(composante *t, int nb)
{
composante c;int i;
c=*t;
for (i=1;i<nb;i++) {*t=*(t+1);t++;}
*t=c;
}
void main(void)
{
composante tableau[10];
int nombre;
lecture(tableau,&nombre);
puts("tableau initial :");
affiche(tableau,nombre);
decale_haut(tableau,nombre);
puts("décalage vers le haut :");
affiche(tableau,nombre);
decale_bas(tableau,nombre);
puts("décalage vers le bas :");
affiche(tableau,nombre);
}
void decale_haut(composante *t, int nb)
{
composante c;int i;
c=*t;
for (i=1;i<nb;i++) {*t=*(t+1);t++;}
*t=c;
}
Bon courage!
23 mars 2008 à 23:01
invalid operands to binary % (pour la ligne 25 et 31)
// FoncTabl: utilisation de tableaux de type simple avec max et min
#include <stdio.h>
// lit au clavier les nombres
void lireTableau(int nombre[ ] , int limite)
{
int i;
for ( i= 0; i < limite; i++)
{
printf("Entrer le nombre %d :", (i+1) );
scanf("%d", &nombre[i]);
}
} // fin lireTableau
// trouve les chiffres pairs et impairs
void pairs (int nombre[ ])
{
do
{
printf("\nVos chiffres pairs : %d", nombre[0]);
}
while (nombre%2!= 0);
do
{
printf("\nVos chiffres impairs : %d", nombre[0]);
}
while (nombre%2= 0);
} // fin lireTableau
void main ( )
{
const int MAX_NB = 10; // nombre de nombres
int i, // compteur
nombre[MAX_NB];
// lecture des nombres
lireTableau(nombre, MAX_NB);
// affichage des résultats
printf("\n*****Resultats \n Vos Nombres : %6.2d", nombre[0]);
for ( i= 1; i < MAX_NB; i++)
printf(" , %6.2d", nombre[i]);
printf( "\nAppuyer sur une touche pour continuer " );
getch();
} // fin du main
24 mars 2008 à 11:04
Dans tes boucles, tu dois encore ajouter une variable de contrôle.
Le plus simple cependant est de mettre une boucle for pour le parcourir du début à la fin :
Normalement ça devrait aller comme ça.
@Bientôt