Rechercher : dans
Par :

Probleme programme langage C

Dernière réponse le 22 fév 2009 à 13:40:43 thib0787, le 21 fév 2009 à 20:16:01 
 Signaler ce message aux modérateurs

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 ?

Configuration: Windows XP
Firefox 3.0.6

Meilleures réponses pour « Probleme programme langage C » dans :
Caractéristiques du langage C VoirLe fichier source Le fichier source d'un programme écrit en langage C est un simple fichier texte dont l'extension est par convention .c. Note d'un visiteur (J.Grondin) : L'extension est en minuscules. Le .C (majuscule) est interprété par...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...

1

bizu53, le 21 fév 2009 à 21:19:23
  • +1

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).

Répondre à bizu53

2

thib0787, le 21 fév 2009 à 22:15:18

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....)

Répondre à thib0787

3

 fiddy, le 22 fév 2009 à 13:40:43

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
Google is your friend

Répondre à fiddy