> Tous les forums > Forum Autres langages
 tableau dynamique
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
sagat94
  Posté le 02/12/2004 @ 10:53 
Aller en bas de la page 
Petit astucien
voila je voudrais faire un programme pour qu'un utilisateur puisse choisir la taille d'un tableau et le remplir tout ca en langage c voici mon soft: #include <stdio.h> #include<conio.h> void main(void) { int nb,tab[],max,i,position; /*taille du tableau*/ printf("Veuillez saisir la taille du tableau:"); scanf ("%d",nb); /*remplir le tableau*/ for (i=0;i<nb;i++) { printf("entrer une valeur:"); scanf("%d",tab[i]); } max=tab[0]; /*donner la valeur max du tableau et la position*/ for (i=0;i<nb;i++) { if(tab[i]>max) { max=tab[i]; position=i; } } printf("la valeur max du tableau est:%d",max,"a l emplacement numero:%d",i); /*sortir de la console*/ getch(); } merci
Publicité
sagat94
 Posté le 04/12/2004 à 18:15 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
alors personne ne sait je crois qu'il faut utiliser la fonction malloc et sizeof a confirmer merci...
edon47
 Posté le 05/12/2004 à 06:00 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Salut saga, Au départ, la taille de ton tableau(tab[]) doit être connue afin de l'initialiser; tu peux choisir un nombre plus grand que nécessaire, cela n'a pas d'importance(ex: int tab[1000], les cases non utilisées seront mises à zéro. Deuxio: scanf(%d",&nb) (plutôt que scanf(%d, nb)); de même: scanf("%d",&tab[i]); la variable saisie doit être précédée du signe "&". Ton programme devrait fonctionner avec cela. //--------------------------------------------------------------------------- #include <stdio.h> #include<conio.h> void main(void) { int nb,tab[1000],max,i,position; /*taille du tableau*/ printf("Veuillez saisir la taille du tableau:"); scanf ("%d",&nb); /*remplir le tableau*/ for (i=0;i<nb;i++) { printf("entrer une valeur:"); scanf("%d",&tab[i]); } max=tab[0]; /*donner la valeur max du tableau et la position*/ for (i=0;i<nb;i++) { if(tab[i]>max) { max=tab[i]; position=i; } } printf("la valeur max du tableau est:%d",max,"a l emplacement numero:%d",i); /*sortir de la console*/ getch(); } //--------------------------------------------------------------------------- Bonne chance en prog.
sagat94
 Posté le 05/12/2004 à 12:58 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
ok merci mais pour le tableau je veux justement avoir uen taille dynamique que l'utilisateur choisi au prealable ...
Patator
 Posté le 05/12/2004 à 18:36 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
int *tab; tab = (int *)malloc(Nb_entiers*sizeof(int)); Et à la fin du programme: free(tab); Je n'ai pas lancé de compilateur pour vérifier, mais de souvenir, c'est ça. Ne pas oublier les .h correspondants: #include <malloc.h> A voir: http://www.infini-fr.com/
edon47
 Posté le 05/12/2004 à 21:24 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Resalut, En effet tu dois utiliser un pointeur pour rendre le tableau dynamique. Voici comment je vois ça. Le programme fonctionne: [code]//--------------------------------------------------------------------------- #include <stdio.h> #include<conio.h> #include <alloc.h> /* malloc et realloc */ #include <stdlib> /* fonction exit */ #define TAILLE_INIT 4 /* Constante taille initiale*/ void main(void) { int nb,max,i,position; int *tab; /* pointeur Tableau d'entier */ int taille; /* taille du tableau */ /* allocation espace initial */ taille = TAILLE_INIT; tab = malloc(taille*sizeof(int)); /*taille du tableau*/ printf("Veuillez saisir la taille du tableau:"); scanf ("%d",&nb); /*remplir le tableau*/ for (i=0;i<nb;i++) { /* vérifie si assez d'espace */ if (nb >= taille) { taille *= 2; tab = realloc(tab, taille*sizeof(int)); /* Sortie du programme si erreur */ if (tab == NULL) { fprintf(stderr, "Allocation echoue %d.\n"); exit(18); } } printf("entrer une valeur:"); scanf("%d",&tab[i]); } max=tab[0]; /*donner la valeur max du tableau et la position*/ for (i=0;i<nb;i++) { if(tab[i]>max) { max=tab[i]; position=i; } } printf("la valeur max du tableau est:%d",max,"a l emplacement numero:%d",i); /*sortir de la console*/ getch(); } //--------------------------------------------------------------------------- [/code] malloc alloue un espace initial et realloc change cet espace au besoin. sizeof(int) est l'espace pour un entier.

Modifié par edon47 le 06/12/2004 04:15
Malcolm
 Posté le 07/12/2004 à 11:07 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

j'avais réussi aussi en écrivant [code]main() { { int lignes; int colonnes; /*taille du tableau*/ printf("Veuillez saisir le nombre de lignes du tableau:"); scanf ("%d",&lignes); printf("Veuillez saisir le nombre de colonnes du tableau:"); scanf ("%d",&colonnes); } } [/code] note bien que dans la mesure où je définis des variables lignes et colonnes pour le tableau, je mets des { } en plus.
koala01
 Posté le 14/12/2004 à 15:55 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Malcolm a écrit :
j'avais réussi aussi en écrivant [code]main() { { int lignes; int colonnes; /*taille du tableau*/ printf("Veuillez saisir le nombre de lignes du tableau:"); scanf ("%d",&lignes); printf("Veuillez saisir le nombre de colonnes du tableau:"); scanf ("%d",&colonnes); } } [/code] note bien que dans la mesure où je définis des variables lignes et colonnes pour le tableau, je mets des { } en plus.
Bien beau, ca, mais il s'agit ensuite de créer un tableau qui permette de contenir les valeurs des différents éléments du tableau... Personnellement, j'utiliserais un pointeur pour y arriver, ce qui donnerait un truc du genre [code]main() { int lignes; int colonnes; type tableau*=0;//en fonction du type de données que l'on souhaite insérer dans le tableau //on fait pointer le mointeur vers l'adresse 0 de manière à éviter les problèmes /*taille du tableau*/ printf("Veuillez saisir le nombre de lignes du tableau:"); scanf ("%d",&lignes); printf("Veuillez saisir le nombre de colonnes du tableau:"); scanf ("%d",&colonnes); //maintenant que l'on a les dimentions lignes et colones, //il faut demandeer l'allocation de mémoire pour les données tableau=(type*)malloc(ligne*colone*(sizeof(type)); //type correspond toujours au type de données //(éventuellement structurées) que l'on veut introduire dans le tableau if(tableau==0) { //le système n'a pas trouvé la mémoire suffisante pour //allouer tout d'un seul bloc: // on indique l'erreur, on vide éventuellement le reste, et on quitte } else { //ici, on met le code a appliquer si l'allocation a réussi //on peut accéder à l'adresse des différents éléments du tableau dynamique avec //tableau[(num_ligne-1)*lignes+colones] //et à la valeur contenue par la mémoire des différents élément du tableau avec //*tableau[(num_ligne-1)*lignes+colones] } } [/code] Il n'y a en effet pas moyen de créer un tableau dynamiquement autrement qu'au travers de l'utilisation de pointeurs...
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
30,17 €SSD SanDisk Plus 240 Go à 30,17 €
Valable jusqu'au 18 Février

Amazon propose actuellement le SSD SanDisk Plus 240 Go à 30,17 € livré gratuitement. Une bonne affaire pour ce SSD très fiable et performant qui offre des débits de 530 Mo/s en lecture et 445 Mo/s en écriture. Il est garanti 3 ans. On le trouve ailleurs à partir de 42 €.


> Voir l'offre
6,85 €Clé USB 3.0 Kingston DataTraveler 50 32 Go à 6,50 €
Valable jusqu'au 20 Février

Amazon vous propose actuellement la clé USB 3.0 Kingston DataTraveler 50 DT50 32 Go à 6,50 €. La livraison est gratuite.


> Voir l'offre
10,90 €Microsoft Office 2019 Professional Plus à 10,90 €
Valable jusqu'au 20 Février

Le vendeur sérieux License Online propose sur Amazon la clé d'activation légale pour Microsoft Office Professionnel 2019 Plus en français à 10,90 €. Cette clé livrée par email vous permettra d'activer Microsoft Office Professionnel 2019 Plus légalement et vous permettra ainsi d'utiliser autant de temps que vous voulez (il s'agit de la version complète et pas d'un abonnement) Word,Excel, PowerPoint, OneNote, Outlook, Publisher et Access 2019 sur un PC. La clé sera à activer sur Office.com où vous pourrez ensuite télécharger toute la suite bureautique. Pour mémoire, Microsoft Office Professionnel 2019 nécessite Windows 10. Pour plus d'info sur la procédure, n'hésitez pas à jeter un oeil à notre dossier pratique Acheter une clé OEM d'Office 2019 et l'installer.


> Voir l'offre

Sujets relatifs
fonction pointeur et, tableau dynamique
tableau croisé dynamique access
Rafraichir un tableau en java
extraction de valeurs sur un tableau a deux entrees
Site dynamique avec Dream et Wamp
symétrie d'un tableau 2D
Problème de gestion dynamique de JCheckbox
Tableau dans java
Fonction qui renvoie un tableau
liaison lexicale vs dynamique
Plus de sujets relatifs à tableau dynamique
 > Tous les forums > Forum Autres langages