Language C Probleme sur les Tableaux

dossier15 Messages postés 2 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

1 réponse

cchristian Messages postés 928 Statut Membre 131
 
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 !.............
0
dossier15
 
Merci Cchristian
je voudrais te remercier pour votre attention
Desole pour le retard.
0
cchristian Messages postés 928 Statut Membre 131 > dossier15
 
Bonsoir ou bonjour,

Merci pour le retour, ce n'est pas grave pour le retard,
0
cchristian Messages postés 928 Statut Membre 131 > dossier15
 
Bonsoir ou bonjour,

Merci pour le retour, ce n'est pas grave pour le retard,
0
cchristian Messages postés 928 Statut Membre 131 > dossier15
 
Bonsoir ou bonjour,

Merci pour le retour, ce n'est pas grave pour le retard,
0