Language C Probleme sur les Tableaux
dossier15
Messages postés
2
Statut
Membre
-
cchristian Messages postés 928 Statut Membre -
cchristian Messages postés 928 Statut Membre -
Bonjour,
je veux cree un tableau de taille avec une dimension dynamique mais je suis bloque
voici mon programme
void ajout_tab(int T[100],int* N)
{
printf("T[%d]=",(*N));
scanf("%d",T[*N]);
(*N)++;
}
void affich_tab(int T[100],int N)
{
int i;
for(i=0;i<N;i++)
printf("T[%d] = %d\n",i,T[i]);
}
void main()
{ int T[100],i,N;
N=0;
clrscr();
for(i=0;i<5;i++)
ajout_tab(T,&N);
affich_tab(T,N);
getch();
}
Merci
je veux cree un tableau de taille avec une dimension dynamique mais je suis bloque
voici mon programme
void ajout_tab(int T[100],int* N)
{
printf("T[%d]=",(*N));
scanf("%d",T[*N]);
(*N)++;
}
void affich_tab(int T[100],int N)
{
int i;
for(i=0;i<N;i++)
printf("T[%d] = %d\n",i,T[i]);
}
void main()
{ int T[100],i,N;
N=0;
clrscr();
for(i=0;i<5;i++)
ajout_tab(T,&N);
affich_tab(T,N);
getch();
}
Merci
Configuration: Windows XP Opera 9.26
1 réponse
-
Bonsoir,
Je te propose cette correction, dis-moi ce que tu en penses. Ca tourne chez moi en environnement C++, il se peut qu'il y ait une ou deux incompatibilités, je crois que tu développes dans un environnement C, à tout hasard j'ai laissé les principales instructions C++.//Rappel : // L'expression *T signifie : acces a l'emplacement memoire dont // T contient l'adresse. // & : obtention de l'adresse d'un objet occupant un emplacement de la memoire. //Ici il faut passer l'adresse de N (&N) car la fonction modifiesa valeur (N++). //Valeur max. pouvant être contenue dans une variable de type int: // 2147483647. Prévoir également un contrôle de numéricité..... void ajout_tab(int (*T), int &N) { printf ( " T[%d]=", N ) ; scanf ( "%d", &T [N] ) ; N++ ; } //Ici ce n'est pas nécessaire de passer l'adresse de N. void affich_tab (int (*T), int N) { int i = 0 ; for ( i = 0; i < N; i++) { printf ( "T[%d] = %d\n", i, T [i] ) ; } } // int (main) permet de gérer un code retour (return) int main () { int I = 0 ; int N = 0 ; clrscr () ; int nb_elemts_T = 100 ; //Valeur 5 pour tester int nb_val_T = 5 ; //Affectation des ressources mémoire au tableau. int * T = NULL ; T = (int*) malloc (nb_elemts_T * sizeof (int*)) ; //Spécifique C++ (à tout hasard) remplacé ici par malloc // int * T = NULL ; // T = new int [nb_elemts_T] ; //Fin spécifique C++ IF (T == NULL) {printf ("nom_pgm: Probleme a la creation du tableau T") ; return (1) ;} N = 0 ; for ( I = 0; I < nb_val_T; I++) { printf ("\n\nSaisissez l'element %i du tableau ", I + 1) ; ajout_tab (T, N) ; affich_tab (T, N) ; } //Libération des ressources mémoire affectées au tableau. free (T) ; //Spécifique C++ (à tout hasard) remplacé ici par free // delete [] T ; //Fin spécifique C++ IF (T == NULL) {printf ("\nom_pgm: Probleme a la destruction du tableau T"); return (2) ;} printf ("\n nom_pgm: tableau T entieremnt renseigne: " "(%i elements).\n\n", nb_val_T) ; printf ("\n Fin du traitement nom_du_pgm.\n\n" ) ; getch () ; return (0) ; }
La mise en page c'est pas ça !.............