traitement de tableau avec allocation & restitutionn de memoire

0/5 (5 avis)

Snippet vu 4 486 fois - Téléchargée 34 fois

Contenu du snippet

Ce code permet d'allouer un tableau en memoire, de la remplir d'afficher le contenu par position et restitue la memoire aprés l'utilisaion! un peu legers mais j'attends des suggestions pour qu'il soit plus complet

Source / Exemple :


#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
#include<alloc.h>
#include <iostream.h>

long *Pt_tableau;
int Nb_max;

int Choix_taille()
{
        int L_Nb_max;

        cout<<" Veuillez indiquer la taille du tableau : \n";
        cin >>L_Nb_max;

        return(L_Nb_max);
}

void Allouer(int L_Nb_max)
{

       Pt_tableau=(long*)malloc((L_Nb_max*4)) ;

}

void Ecrire( int L_position,float L_valeur)
{

  • (Pt_tableau+L_position)= L_valeur;
} float Lire(int L_position ) { float valeur; valeur=*(Pt_tableau+(L_position)); return(valeur); } void Affichage() { int indice=0; float valeur; for(indice=0;indice<Nb_max;indice++) { valeur=Lire(indice); cout<<"\nValeur n"<<indice; cout<<" : "<<valeur; } } void main() { int position=0; float valeur=0.0; float valeur_lue=0.0; Nb_max=Choix_taille(); Allouer(Nb_max); for(position=0;position<Nb_max;position++) { cout<< "\nveuillez donner une valeur : "; cin>> valeur; Ecrire(position,valeur); } cout<< "\n\nDonnez la position de la valeur a lire dans le tableau : "; cin >>position; if(position>Nb_max) { cout<<"\nERREUR : FORMAT DEPASSE"; } else { valeur_lue=Lire((position-1)); cout<<"\nLa valeur lue est : "<<valeur_lue; } Affichage(); //suppression du tableau et restitution de la place en memoire delete (Pt_tableau); getch(); }

A voir également

Ajouter un commentaire Commentaires
cs_kelsey Messages postés 35 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 11 décembre 2004
12 juin 2003 à 18:17
Oui coach!! je ferai de mon mieux!
;p
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
12 juin 2003 à 18:16
Reponse au second message:
valeur est un 'float'
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
12 juin 2003 à 18:14
- le teste du malloc ?
- le #include est initule
- au lieur de faire " *(Pt_tableau+L_position)= L_valeur; " tu devrait plutot faire : "Pt_tableau[L_position] ) L_valeur;"
- "malloc((L_Nb_max*4))" n'est pas bien, car si tu vas sur un ancien ordinateur 16 bits il ne faut pas faire "*4" mais "*2" !
Donc fais plutot "malloc((L_Nb_max*sizeof(long)))" (portabilite valable sue tout les ordinateurs)
- Pour la onction 'Lire' fais directement
'return *(Pt_tableau+(L_position));' , c'est plus direct
- Dans 'Affichage' tu initialises 2 fois 'indice' !
- tu testes "position>Nb_max", et si je tape -10 !!!
tu devrais faire : "position>Nb_max && position <= 0"
- Pourquoi faire des globales !! Il faut eviter de toujours mettre des globales ... (des fois c'est neccessaire)
cs_kelsey Messages postés 35 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 11 décembre 2004
12 juin 2003 à 18:13
ben non puisque valeur est un int et que *(Pt_tableau+L_position) est un pointeur sur entier, ce pointeur renvoit un entier!!
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
12 juin 2003 à 18:04
ATTENTION :
" *(Pt_tableau+L_position)= L_valeur; "
- les types sont differents !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.