Probleme programme langage C

Résolu/Fermé
thib0787 Messages postés 889 Date d'inscription jeudi 10 juillet 2008 Statut Membre Dernière intervention 21 septembre 2013 - 21 févr. 2009 à 20:16
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 14 oct. 2011 à 16:29
Bonjour,

Bonjour, je suis débutant dans le langage C, pour m'entrainer, j'ai créer un programme pour généré aléatoirement des valeur dans un tableau de taille (taille que l'on peut définir)
voici le programme :


#include <stdio.h>
#include <stdlib.h>
#include <time.h>


// génération de valeur aléatoire pour chaque ligne du tableau
void Generation_Aleatoire_de_nombre(long *Tableau, long Taille, long i)
{
long nombreMystere = 0;

srand(time(NULL));

for(i = 0 ; i < Taille ; i++)
{
const long MAX = 100, MIN = 0;
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
Tableau[i] = nombreMystere;
}
}


// fonction qui permet d'afficher les valeurs de chaque ligne du tableau
void Parcour_Tableau(long *Tableau, long Taille, long i)
{

for(i = 0 ; i < Taille ; i++)
{
printf("\n La ligne %ld du tableau contient la valeur %ld", i, Tableau[i]);
}
}


// fonction qui fait la somme de toute les valeurs du tableau
void Somme_Valeur_Tableau(long *Tableau, long Taille, long i)
{
long Somme = 0;
for(i = 0 ; i < Taille ; i++)
{
Somme = Tableau[i] + Somme;
}
printf("\n\n ");
printf("La somme des valeurs de ce tableau est : %ld", Somme);
}


int main(int argc, char *argv[])
{
long Taille = 0, i = 0;
long Tableau[Taille];

printf("\n\n Taper votre nombre de ligne pour le tableau : ");
scanf("%ld", &Taille);

Generation_Aleatoire_de_nombre(Tableau, Taille, i);
Parcour_Tableau(Tableau, Taille, i);
Somme_Valeur_Tableau(Tableau, Taille, i);

printf("\n\n ");
system("PAUSE");
return 0;
}




Tout le programme fonctionne mais rien de ce qui est demander n'est effectuer correctement,
je demande un nombre aléatoire entre 0 et 100, et il m'affiche des nombre allant jusqu'à -5614561
lorsque je demande d'afficher 20 lignes, je me retrouve avec un nombre aléatoire de ligne au environ de 80

comment se fait - il ?

4 réponses

bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 859
21 févr. 2009 à 21:19
long Taille = 0, i = 0;
long Tableau[Taille];

En faisant ça, tu déclares Tableau de taille 0 (puisque Taille = 0).
Donc par la suite ça écrit tes valeurs n'importe où (tu as d'ailleurs pas de chance que ça n'ait pas planté, sinon tu t'en serais rendu compte).
1
thib0787 Messages postés 889 Date d'inscription jeudi 10 juillet 2008 Statut Membre Dernière intervention 21 septembre 2013 176
21 févr. 2009 à 22:15
Merci beaucoup, en effet en modifiant la valeur de la variable taille, le problème a été résolu, de plus j'ai constater que, même si je prédéfinissais une taille de 10 (par exemple) et que si j'indique environ 200 ligne dans le programme (en cour d'exécution) il plantais quand même, la valeur de taille défini la taille maximum que je pourrais rentrer sans qu'il y ais de bug !!!


Merci encore,... (de nouvelle question surviendrons peut être....)
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
22 févr. 2009 à 13:40
Salut,
Soit tu fixes une valeur maximum, et dans ton scanf tu vérifies que l'utilisateur n'entre pas une valeur supérieure : usage classique d'un tableau statique.
Soit tu utilises un tableau de taille définie à l'exécution : usage classique d'un tableau dynamique (avec malloc/free).
Ou alors, tu peux utiliser : scanf("%ld",&taille); long Tableau[taille];

Cdlt
0
ecrire un programme c qui peut resoudre l'équation ax+b=0
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
14 oct. 2011 à 16:29
Bonjour,
Merci de créer votre propre post...
Cdlt,
0