Exercice débutant en C
Résolu
south.boy
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
south.boy Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
south.boy Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Bonjour, je doit ecrire un programme qui realise les opérations suivantes :
1 : Prend une constante n donnée par l'utilisateur;
2 : Remplie un tableau t1 de n valeurs aléatoires de 0à20
3 : Affiche les n valeurs de t1;
4 : Calcul et affiche la moyenne de t1;
5 : Remplie un tableau t2 des éléments de t1 mais dans l'ordre inverse;
6 : Affiche t2;
7 : Rempli un tableau t3 avec le reste de la division euclidienne par 4 des valeurs de t2;
8 : Affiche t3;
9 : Donne le nombre de fois où il y a la valeur 0 dans t3;
10 : Remplie un 4eme tableau t4 avec uniquement les valeurs pairs de t3;
11 : Affiche t4;
Voila ce que j'ai déja codé, tout se compil, mais le programme ne fonctionne pas, sauf pour n=25, où il affiche le tableau t1 puis bug :/ .
Je n'arrive pas à voir mes erreurs, help !!
Merci de votre aide
1 : Prend une constante n donnée par l'utilisateur;
2 : Remplie un tableau t1 de n valeurs aléatoires de 0à20
3 : Affiche les n valeurs de t1;
4 : Calcul et affiche la moyenne de t1;
5 : Remplie un tableau t2 des éléments de t1 mais dans l'ordre inverse;
6 : Affiche t2;
7 : Rempli un tableau t3 avec le reste de la division euclidienne par 4 des valeurs de t2;
8 : Affiche t3;
9 : Donne le nombre de fois où il y a la valeur 0 dans t3;
10 : Remplie un 4eme tableau t4 avec uniquement les valeurs pairs de t3;
11 : Affiche t4;
Voila ce que j'ai déja codé, tout se compil, mais le programme ne fonctionne pas, sauf pour n=25, où il affiche le tableau t1 puis bug :/ .
Je n'arrive pas à voir mes erreurs, help !!
#include <stdio.h> #include <stdlib.h> #include <time.h> void remp_tab_alea(int t[], int n) //fonction pour remplir le tableau { int i=0; for (i=0 ; i<n ; i++) { t[i]=rand()%21; //le tableau doit contenir des valeurs aléatoires de [0;20] } return; } void affiche_tab(int t[], int n) //fonction pour afficher le contenu du tableau { int i=0; printf("Les valeurs du tableau sont : "); for (i=0 ; i<n ; i++) { printf("%2d ", t[i]); } printf("\n"); return; } double moyenne (int t[], int n) //fonction pour calculer la moyenne des nombres du tableau { int i=0; double moy=0.0; for (i=0 ; i<n ; i++) { moy=moy+t[i]; } moy=moy/n; printf("La moyenne est de %.2lf", moy); return moy; } void div_entier(int t3[], int t2[], int n) //fonction pour remplir un tableau du reste de la div. euclidienne par 4 d'un autre tableau { int i=0; for (i=0 ; i<n ; i++) { t3[i]=t2[i]%4; printf("%d", t3[i]); } return; } int main() //fonction principale { srand(time(0)); //on initie le générateur de nombre aléatoire int n=0, i=0, j=0; printf("Donnez n : "); scanf("%d", &n); //On prend le nombre n voulu par l'utilisateur. int t[n],t2[n], t3[n], t_pair[n]; //On déclare les tableaux remp_tab_alea(t[n],n); //On rempli le 1er tableau... affiche_tab(t[n],n);//...On l'affiche... moyenne(t[n],n);//...Et on affiche sa moyenne. printf("\nOn remplit un 2eme tableau, qui est en fait le premier mais inverse.\n"); /* Cette opération sert à inverser les valeurs du 1er tableau et à les mettrent dans le 2eme. */ j=n-1; for (i=0 ; i<n ; i++) { t2[i]=t[j]; j--; } affiche_tab(t2[n],n);//On affiche le 2eme tableau printf("\nOn donne a present le tableau 3 contenent le reste des valeurs du tab 2 dividees par 4. \n"); div_entier(t3[n], t2[n],n); //On rempli le tableau 3 avec les restes. int nb=0; for (i=0 ; i<n ; i++) { if (t3[i]==0) { nb=nb+1; } }//On vient de calculer combien de fois il y avait 0 dans le tableau affiche_tab(t3[n],n);//On affiche le 3eme tableau... printf("\nIl y a %d fois le nombre 0 dans le 3eme tableau.\n", nb);//...Le nombre de 0. printf("On prend maintenant un 4eme tableau , qui ne contient QUE les valeurs PAIRS de t3.\n"); /*On prend les valeurs pair du 3eme tableau pour les mettrent dans un 4eme. */ j=0; for (i=0 ; i<n ; i++) { if (t3[i]%2==0) { t_pair[j]=t3[i]; j++; } } affiche_tab(t_pair[n],n);//On affiche ce 4eme tableau. printf("\n\n\nMerci et au revoir !\n\n\n");//On informe de la fin du programme. return 0;//On fini le main. }
Merci de votre aide
A voir également:
- Exercice débutant en C
- Logiciel de programmation pour débutant - Guide
- Logiciel montage vidéo débutant - Guide
- Apprendre le coran pour débutant (+ pdf) - Télécharger - Histoire & Religion
- Platine dj debutant - Forum Enregistrement / Traitement audio
- Traitement d'exercice - Forum Bureautique
1 réponse
Bonjour,
S'il s'agit d'un exo :
int t[n],t2[n], t3[n], t_pair[n]; //On déclare les tableaux
C'est correct, mais probablement pas pour les raisons que tu penses.
Je te conseille d'utiliser plutôt : malloc.
int *t;
t=malloc(n*sizeof (*t));
remp_tab_alea(t[n],n);
Pour envoyer en paramètre un tableau (en fait un pointeur), il faut mettre : remp_tab_alea(t,n); tout simplement. Pareil pour toutes les fonctions.
Tu n'as pas besoin de mettre "return" en fin de tes fonctions retournant void.
S'il s'agit d'un exo :
int t[n],t2[n], t3[n], t_pair[n]; //On déclare les tableaux
C'est correct, mais probablement pas pour les raisons que tu penses.
Je te conseille d'utiliser plutôt : malloc.
int *t;
t=malloc(n*sizeof (*t));
remp_tab_alea(t[n],n);
Pour envoyer en paramètre un tableau (en fait un pointeur), il faut mettre : remp_tab_alea(t,n); tout simplement. Pareil pour toutes les fonctions.
Tu n'as pas besoin de mettre "return" en fin de tes fonctions retournant void.
Effectivement, j'avais mal appelé les fonctions (honte à moi...)..
Encore merci, et au revoir :)