begin process at 2010 02 10 09:46:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

compilation mai au lancement "erreur la memoire ne peu pas pas etre read"


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

compilation mai au lancement "erreur la memoire ne peu pas pas etre read"

vendredi 23 décembre 2005 à 10:44:54 | compilation mai au lancement "erreur la memoire ne peu pas pas etre read"

touny23

je maitrise pas tro le C.mai comme j ai un projet a faire dessus pour la rentré , je sui obligé de m y mettre .
j arrive a compiler sous dev-cpp mai lors de l execution j ai cette erreur qui apparait :
L'instruction à "0*0040148a" emploie l adresse mémoire "0*00000000".La mémoire ne peut pas etre"read".
cliquez sur OK pour terminer le programme.
cliquez sur Annuler pour déboguer le programme

je sai pas d ou ça vien

je vous envoie le programme : si vous pouviez m aider ça m arrnagerai enormement ...sinon j essaierai sous unix a la rentrée ...merci d avance

#include<stdio.h>
#include<stdlib.h>
struct matrice {
                int dim1;
                int dim2;
                int type;
                double **tab;
                };
void creation (struct matrice M)
{
int i,j;
printf("creation d'une matrice!!!!\n");
printf("entrer la 1e dimension=");
scanf("%d",&M.dim1);
printf("entrer la 2e dimension=");
scanf("%d",&M.dim2);
printf("entrer le type de la matrice=\n");
printf("1-matrice pleine\n");
printf("2-matrice triangulaire inférieure\n");
printf("3-matrice triangulaire supérieure\n");
scanf("%d",&M.type);
if(M.type==1){
              M.tab=(double **)malloc(M.dim1*sizeof(double *));
              if(M.tab==NULL)printf("echec allocation mémoire\n");
              for(i=0;i<M.dim1;i++)
              {
              M.tab[i]=(double *)malloc(M.dim2*sizeof(double));
              if(M.tab[i]==NULL)
                                {for(j=0;j<i;j++){
                                                  free(M.tab[j]);
                                                  printf("echec allocation mémoire\n");
                                                  }
                                }
              }
printf("chiffre de la matrice??");
for(i=0;i<M.dim2;i++){
                     printf("%d e ligne\n",i);
                     for(j=0;j<M.dim1;j++)scanf("%lf",&M.tab[i][j]);
                     }
              }
}

void affichage(struct matrice M)
{
int i,j;    
for(i=0;i<M.dim2;i++){
                     for(j=0;j<M.dim1;j++){printf("%lf",M.tab[i][j]);}
                     printf("\n");
                     }
}

main()
{
struct matrice M1;
creation(M1);
affichage(M1);
system("pause");
}

vendredi 23 décembre 2005 à 11:23:10 | Re : compilation mai au lancement "erreur la memoire ne peu pas pas etre read"

luhtor

Tu te mélanges les pinceaux avec le passage d'argument. Tu oublies qu'un argument n'est qu'une copie de l'objet initial. Donc si tu modifies la copie, ca change rien à l'objet initial. Donc quand tu fais affichage(M1). Tu affiches une matrice qui n'est pas encore initialisée.
Faut faire des passages par référence, (avec & si tu fais du C++, ou par pointeur, si tu fais de C).

Bon mais ca doit pas etre la seule erreur, mais essai de mieux le présenter, la c'est pénible à déchiffrer.
Tu vois ce genre de chose est étrange:
if(M.tab==NULL)
    printf("echec allocation mémoire\n");
for(i=0;i<M.dim1;i++)
{
M.tab[i]=(double *)malloc(M.dim2*sizeof(double));
...

Ya une erreur d'allocation, mais tu vas quand meme allouer tous les éléments de la matrice ...

Bon aller cyao.


vendredi 23 décembre 2005 à 11:24:32 | Re : compilation mai au lancement "erreur la memoire ne peu pas pas etre read"

theguitou

Il y a un pb avec ta structure. Le code ci dessous marche. Mais essay quand même de comprendre !!

// tester sous linux.

#include<stdio.h>
#include<stdlib.h>

typedef struct {
                int dim1;
                int dim2;
                int type;
                double **tab;
                }matrice;

void creation (matrice *M)
{
int i,j;
printf("creation d'une matrice!!!!\n");
printf("entrer la 1e dimension=");
scanf("%d",&M->dim1);
printf("entrer la 2e dimension=");
scanf("%d",&M->dim2);
printf("entrer le type de la matrice=\n");
printf("1-matrice pleine\n");
printf("2-matrice triangulaire inférieure\n");
printf("3-matrice triangulaire supérieure\n");
scanf("%d",&M->type);
if(M->type==1){
              M->tab=(double **)malloc(M->dim1*sizeof(double *));
              if(M->tab==NULL)printf("echec allocation mémoire\n");
              for(i=0;i<M->dim1;i++)
              {
              M->tab[i]=(double *)malloc(M->dim2*sizeof(double));
              if(M->tab[i]==NULL)
                                {for(j=0;j<i;j++){
                                                  free(M->tab[j]);
                                                  printf("echec allocation mémoire\n");
                                                  }
                                }
              }
printf("chiffre de la matrice??");
for(i=0;i<M->dim2;i++){
                     printf("%d e ligne\n",i);
                     for(j=0;j<M->dim1;j++)scanf("%lf",&M->tab[i][j]);
                     }
              }
}

void affichage(matrice M)
{
int i,j;   
for(i=0;i<M.dim2;i++){
                     for(j=0;j<M.dim1;j++){printf("%lf",M.tab[i][j]);}
                     printf("\n");
                     }
}

int main()
{
matrice M1;
creation(&M1);
affichage(M1);
system("pause");
 return 0;
}
vendredi 23 décembre 2005 à 11:25:00 | Re : compilation mai au lancement "erreur la memoire ne peu pas pas etre read"

cosmobob

salut,
tu dois passer ta structure matrice par un pointeur.

void creation (struct matrice* M)
{
// remplacer M. par M->
}

dans ton main:
main()
{
    struct matrice M1;
    creation(&M1);
    affichage(M1);
    system("pause");
}

en C, tu ne peux pas modifier un objet que tu passes par valeur dans un procedure.
Si tu veux le modifier, tu dois le passer par adresse (avec un pointeur)

a+
vendredi 23 décembre 2005 à 11:26:29 | Re : compilation mai au lancement "erreur la memoire ne peu pas pas etre read"

cosmobob

bon ben on t'a tous répondu en meme temps
vendredi 23 décembre 2005 à 11:38:02 | Re : compilation mai au lancement "erreur la memoire ne peu pas pas etre read"

luhtor

Effectivement, et en plus pour dire la meme chose. :)
vendredi 23 décembre 2005 à 14:59:49 | Re : compilation mai au lancement "erreur la memoire ne peu pas pas etre read"

Joky

Membre Club
Tu dois passer par un pointeur sur ta structure ;)
Oups :)
Trop tard !
Lol

if(!Meilleur("Joky")) return ERREUR;<

vendredi 23 décembre 2005 à 15:31:52 | Re : compilation mai au lancement "erreur la memoire ne peu pas pas etre read"

touny23

merci de vos réponses si rapides. je vai essayer de comprendre maintenant


Cette discussion est classée dans : int, printf, tab, for, matrice


Répondre à ce message

Sujets en rapport avec ce message

Problem Affichage de mon Tableau [ par Orezza ] salut à tous, j'ai un blem à l'affichage du tableau. l'utilisateur parametre son tableau, c lui qui l'initilize mais j'arrive pas à afficher apres le help une fonction qui a besoin de vous [ par natacha86 ] Re bonjour a tout le monde, voila j'ai mis tout le prog si vous voulez tester, en fait le pb viens de la fonctino tri_shell(), je ne sais pas pkoi ell pb en c urgenttttttttttttttttt [ par natacha86 ] bonjour, j'ai un probleme avec mon programme, il ne veut pas sortir, j'ai fais un menu et apparement ya un bug mais je ne comprend rien.le code est as Return tableau? [ par zut69 ] Bonjour,Je suis en train d'écrire un petit programme sur les matrices en C, mais vu que je veux faire quelque chose d'assez général, j'ai besoin que d Produit matriciel en c renvoit des valeurs complètement fausses [ par bilel59 ] Bonjout à tous, je sollicite votre aide pour la raison indiquée dans le titre, en effet le produif matriciel que j'effectue renvoit des valeurs vraime la programmation de l'algorithme du simplexe [ par soums2009 ] salut à tous j'ai un probleme  avec mon code qui implemente l'algoritme du symplexe et je sollicite votre aide pour pouvoir terminer et rendre mon dev aide sur un prog [ par jsuititidu27 ] Bonjour, j'ai besoin d'un petit coup de main. ceci est un exo qui demande d'écrire un programme de tri de chaines de caractères. J'ai donc écrit le co HELP [ par alex64100 ] BONOURje doit réaliser un   prog de tri de caractèresvoici mon code#include #include #include #include int main (int argc,  char ar algorithme de greedy [ par starbluesky ] <link rel="Fi class matrice [ par ciaonataha ] J'ai ecrit le programme classe matrice...mais j'ai les error comme:"matrice.cpp:269: error: no match for 'operator=' in 'b = matrice::Mat_decomposer(a


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales