Language C- allocation dynamique
Marjo81
-
fiddy Messages postés 11653 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11653 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un exercice à faire en prog. C et je ne comprends pas. SVP aidez moi.. J'ai besoin qu'on m'explique la solution. Merci !!!
Un petit comique a enlevé toutes les étoiles de la fonction Myst(), ce qui fait qu'elle ne compile plus. Réécrivez cette fonction en y mettant les étoiles manquantes pour qu'elle fonctionne (il en manque 11 au total).
#include <stdio.h>
#include <stdlib.h>
void Myst(int tab, int nbr)
{ int n;
do{
printf("Entrez un nombre entier (0 pour terminer): ");
fflush(stdin);
scanf("%d", &n);
if(n != 0){
nbr = nbr + 1;
tab = (int ) realloc( tab, nbr );
( tab )[ nbr-1 ] = n;
}
} while(n != 0);
}
//la fonction "main" ne contient pas d'erreurs
int main(){
int *tableau = NULL, nbr = 0;
Myst(&tableau, &nbr); //ici ou transmet le pointeur par référence!!
return EXIT_SUCCESS;
}
J'ai un exercice à faire en prog. C et je ne comprends pas. SVP aidez moi.. J'ai besoin qu'on m'explique la solution. Merci !!!
Un petit comique a enlevé toutes les étoiles de la fonction Myst(), ce qui fait qu'elle ne compile plus. Réécrivez cette fonction en y mettant les étoiles manquantes pour qu'elle fonctionne (il en manque 11 au total).
#include <stdio.h>
#include <stdlib.h>
void Myst(int tab, int nbr)
{ int n;
do{
printf("Entrez un nombre entier (0 pour terminer): ");
fflush(stdin);
scanf("%d", &n);
if(n != 0){
nbr = nbr + 1;
tab = (int ) realloc( tab, nbr );
( tab )[ nbr-1 ] = n;
}
} while(n != 0);
}
//la fonction "main" ne contient pas d'erreurs
int main(){
int *tableau = NULL, nbr = 0;
Myst(&tableau, &nbr); //ici ou transmet le pointeur par référence!!
return EXIT_SUCCESS;
}
A voir également:
- Language C- allocation dynamique
- Tableau croisé dynamique - Guide
- Exemple tableau croisé dynamique télécharger - Télécharger - Tableur
- Liste déroulante dynamique excel - Guide
- Sommaire dynamique word - Guide
- Le nom du champ de tableau croisé dynamique n'est pas valide - Forum Excel
1 réponse
Il n'y a pas que les étoiles qui manquent pour rendre le code correct.
Par exemple, dans un code il ne faut jamais mettre fflush(stdin) : comportement non défini.
void Myst(int tab, int nbr)
Il s'agit de : int *tab (pointeur sur une zone à allouer)
tab = (int ) realloc( tab, nbr );
tab=(int *)... bien que le cast est inutile, voir déconseillé.
Voilà les deux premiers endroits où il en manque. A toi de continuer.
PS : Myst(&tableau, &nbr); //ici ou transmet le pointeur par référence!!
Euh, ya pas de référence en C. Il suffit faut enlever l'esperluette (&) devant tableau puisqu'on transmet son adresse.
Où t'as eu cet exo ???
Cdlt,
Par exemple, dans un code il ne faut jamais mettre fflush(stdin) : comportement non défini.
void Myst(int tab, int nbr)
Il s'agit de : int *tab (pointeur sur une zone à allouer)
tab = (int ) realloc( tab, nbr );
tab=(int *)... bien que le cast est inutile, voir déconseillé.
Voilà les deux premiers endroits où il en manque. A toi de continuer.
PS : Myst(&tableau, &nbr); //ici ou transmet le pointeur par référence!!
Euh, ya pas de référence en C. Il suffit faut enlever l'esperluette (&) devant tableau puisqu'on transmet son adresse.
Où t'as eu cet exo ???
Cdlt,