traitement de tableau avec allocation & restitutionn de memoire

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 136 fois - Téléchargée 32 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

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
2
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
2
- 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

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
2
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.