Probleme en structure en c
Résolu
abdess111
Messages postés
40
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 mai 2008
-
25 févr. 2008 à 15:56
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 1 mars 2008 à 14:32
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 1 mars 2008 à 14:32
A voir également:
- Probleme en structure en c
- Logiciel calcul structure bois gratuit - Télécharger - Architecture & Déco
- Structure d'un rapport de stage - Guide
- Trouvez l'erreur dans la structure du document et corrigez-la. ✓ - Forum Word
- Pdf structure 40 - Forum PDF
- Structure adresse ip - Guide
9 réponses
Bonjour
scanf("%f",&table[i].moy[i]);
ça ne serait pas plutôt scanf("%f",table[i].moy[j]); ?
( avec &table[i].moy[i] tu essayes d'initialiser l'adresse d'un pointeur avec un flottant)
et pour p=table[0].moy[i]*table[1].moy[i]; là tu muliplies de pointeurs !
p=*table[0].moy[i]*(*table[1].moy[i]);
scanf("%f",&table[i].moy[i]);
ça ne serait pas plutôt scanf("%f",table[i].moy[j]); ?
( avec &table[i].moy[i] tu essayes d'initialiser l'adresse d'un pointeur avec un flottant)
et pour p=table[0].moy[i]*table[1].moy[i]; là tu muliplies de pointeurs !
p=*table[0].moy[i]*(*table[1].moy[i]);
abdess111
Messages postés
40
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 mai 2008
1
25 févr. 2008 à 16:27
25 févr. 2008 à 16:27
merci bien de mavoir repondre
voila jai essyé mais tjr ca marche pas
#include<stdio.h>
#include<stdlib.h>
struct vecteur{
unsigned n;
float *moy;
};typedef struct vecteur tvecteur;
main()
{
unsigned n,i,j;
float p;
tvecteur *table;
table=malloc(2*sizeof(tvecteur));
printf("saisi la taille du vecteur:\t");
scanf("%d",&n);
table->moy=malloc(n*sizeof(float));
for(i=0;i<2;i++)
{
printf("la saisi des coordonnee du vecteur %d \n",i+1);
for(j=0;j<n;j++)
{
printf("saisi lelement %d:\t",j+1);
scanf("%f",&table[i].moy[j]);
}
}
for(i=0;i<n;i++)
p=*(table[0].moy[i])*(*table[1].moy[i]);
printf("%0.2f\n",p);
}
pour le p=*(table[0].moy[i])*(*table[1].moy[i]); le compilateur marque une erreur parce que fo pas faire une etoile parce que cest comme je travaille avec des tavleau tab[0].moy[1]
je essayé avec
p=*(table+0->moy+i)**(table+1->moy+i) mais tjr marqyue une erreur
mais mnt avec ce programme
#include<stdio.h>
#include<stdlib.h>
struct vecteur{
unsigned n;
float *moy;
};typedef struct vecteur tvecteur;
main()
{
unsigned n,i,j;
float p;
tvecteur *table;
table=malloc(2*sizeof(tvecteur));
printf("saisi la taille du vecteur:\t");
scanf("%d",&n);
table->moy=malloc(n*sizeof(float));
for(i=0;i<2;i++)
{
printf("la saisi des coordonnee du vecteur %d \n",i+1);
for(j=0;j<n;j++)
{
printf("saisi lelement %d:\t",j+1);
scanf("%f",&table[i].moy[j]);
}
}
for(i=0;i<n;i++)
p=(table[0].moy[i]*table[1].moy[i]);
printf("%0.2f\n",p);
}
marque pas des erreur mais a lheur de la saisi deux deux vecteur le compilateur arrete apres la saisie du premier element du vecteur 2
je crois ke le probleme se trouve de cette boucle
___________________________________
for(i=0;i<2;i++)
{
printf("la saisi des coordonnee du vecteur %d \n",i+1);
for(j=0;j<n;j++)
{
printf("saisi lelement %d:\t",j+1);
scanf("%f",&table[i].moy[j]);
_______________________
}
et si tu suprimme le (&) le programme sarrete dés la saisie du premier alement du vecteur 1
___________________________________________________________________
merci
voila jai essyé mais tjr ca marche pas
#include<stdio.h>
#include<stdlib.h>
struct vecteur{
unsigned n;
float *moy;
};typedef struct vecteur tvecteur;
main()
{
unsigned n,i,j;
float p;
tvecteur *table;
table=malloc(2*sizeof(tvecteur));
printf("saisi la taille du vecteur:\t");
scanf("%d",&n);
table->moy=malloc(n*sizeof(float));
for(i=0;i<2;i++)
{
printf("la saisi des coordonnee du vecteur %d \n",i+1);
for(j=0;j<n;j++)
{
printf("saisi lelement %d:\t",j+1);
scanf("%f",&table[i].moy[j]);
}
}
for(i=0;i<n;i++)
p=*(table[0].moy[i])*(*table[1].moy[i]);
printf("%0.2f\n",p);
}
pour le p=*(table[0].moy[i])*(*table[1].moy[i]); le compilateur marque une erreur parce que fo pas faire une etoile parce que cest comme je travaille avec des tavleau tab[0].moy[1]
je essayé avec
p=*(table+0->moy+i)**(table+1->moy+i) mais tjr marqyue une erreur
mais mnt avec ce programme
#include<stdio.h>
#include<stdlib.h>
struct vecteur{
unsigned n;
float *moy;
};typedef struct vecteur tvecteur;
main()
{
unsigned n,i,j;
float p;
tvecteur *table;
table=malloc(2*sizeof(tvecteur));
printf("saisi la taille du vecteur:\t");
scanf("%d",&n);
table->moy=malloc(n*sizeof(float));
for(i=0;i<2;i++)
{
printf("la saisi des coordonnee du vecteur %d \n",i+1);
for(j=0;j<n;j++)
{
printf("saisi lelement %d:\t",j+1);
scanf("%f",&table[i].moy[j]);
}
}
for(i=0;i<n;i++)
p=(table[0].moy[i]*table[1].moy[i]);
printf("%0.2f\n",p);
}
marque pas des erreur mais a lheur de la saisi deux deux vecteur le compilateur arrete apres la saisie du premier element du vecteur 2
je crois ke le probleme se trouve de cette boucle
___________________________________
for(i=0;i<2;i++)
{
printf("la saisi des coordonnee du vecteur %d \n",i+1);
for(j=0;j<n;j++)
{
printf("saisi lelement %d:\t",j+1);
scanf("%f",&table[i].moy[j]);
_______________________
}
et si tu suprimme le (&) le programme sarrete dés la saisie du premier alement du vecteur 1
___________________________________________________________________
merci
j'arrête les bêtises, promis
le problème vient de là (cette fois, j'ai essayé)
table->moy=malloc(n*sizeof(float));
tu n'alloues qu'une fois alors que tu as 2 'table'
table[0].moy=malloc(n*sizeof(float));
table[1].moy=malloc(n*sizeof(float));
le problème vient de là (cette fois, j'ai essayé)
table->moy=malloc(n*sizeof(float));
tu n'alloues qu'une fois alors que tu as 2 'table'
table[0].moy=malloc(n*sizeof(float));
table[1].moy=malloc(n*sizeof(float));
abdess111
Messages postés
40
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 mai 2008
1
25 févr. 2008 à 19:26
25 févr. 2008 à 19:26
merci
mais cest un peu comliké alors si on a un tableur de m elements qui contiens des structures et dans cette structures ya un tableau de n element je dois faire
table[0].moy=malloc(n*sizeof(float));
table[1].moy=malloc(n*sizeof(float));
table[2].moy=malloc(n*sizeof(float));
table[3].moy=malloc(n*sizeof(float));.................................................m fois
si ya une autre facons svp
je sais ke tu peu gaire une boucle comme ca
for(i=0;i<m;i++)
table[i].moy=malloc(n*sizeof(float));
mais bon ....
si ya des autre facon svp
merci detre serieux :-)
mais cest un peu comliké alors si on a un tableur de m elements qui contiens des structures et dans cette structures ya un tableau de n element je dois faire
table[0].moy=malloc(n*sizeof(float));
table[1].moy=malloc(n*sizeof(float));
table[2].moy=malloc(n*sizeof(float));
table[3].moy=malloc(n*sizeof(float));.................................................m fois
si ya une autre facons svp
je sais ke tu peu gaire une boucle comme ca
for(i=0;i<m;i++)
table[i].moy=malloc(n*sizeof(float));
mais bon ....
si ya des autre facon svp
merci detre serieux :-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
<ital>si ya des autre facon svp<ital>
Tu peux faire la même chose avec un while, mais ça n'apporte rien, le for convient parfaitement dans ce cas. Tu as une raison particulière de souhaiter autre chose, ou c'est par simple curiosité.
Pour ce qui est d'être sérieux, excuse-moi, je croyais l'être dans mon message n°1. Je ne plaisantais même pas, je me trompais tout simplement, je ne sais pas à quoi je pensais en écrivant ces âneries.
Tu peux faire la même chose avec un while, mais ça n'apporte rien, le for convient parfaitement dans ce cas. Tu as une raison particulière de souhaiter autre chose, ou c'est par simple curiosité.
Pour ce qui est d'être sérieux, excuse-moi, je croyais l'être dans mon message n°1. Je ne plaisantais même pas, je me trompais tout simplement, je ne sais pas à quoi je pensais en écrivant ces âneries.
abdess111
Messages postés
40
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 mai 2008
1
26 févr. 2008 à 00:07
26 févr. 2008 à 00:07
ok
merci vous avez bien maider merci bcp
merci vous avez bien maider merci bcp
mansas87
Messages postés
23
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
31 août 2009
27 févr. 2008 à 09:09
27 févr. 2008 à 09:09
si je comprends bien vous voulez faire le produit de deux matrice mais on voit que vous declarez deux.le produit sera ou alors???il faut essayer avec ce programme(sur dev c++)
#include"stdio.h"
#include"conio.h"
#include"stdlib.h"
#include"malloc.h"
struct liste{
unsigned int n;
float **moy;
};
main()
{
struct liste *table=0;
int i,j,h,m;
table=(struct liste*)malloc(3*sizeof(struct liste));/*declaration des trois matrices*/
for(i=0;i<3;i++)
{ if(i!=2)
{printf("donnez la taille de la %d ieme matrice\n",i+1);
scanf("%d",&table[i].n);m=table[i].n;}
table[i].moy=(float**)malloc(m*sizeof(float));
if(i!=2)
printf("donnez les elements de la %d ieme matrice\n",i+1);
for(j=0;j<m;j++)
{
table[i].moy[j]=(float*)malloc(m*sizeof(float));
if(i!=2)
for(h=0;h<m;h++)
scanf("%f",&table[i].moy[j][h]);
}
}
if(table[0].n!=table[1].n)
printf("le produit des deux matrices est impossible");
else{
for(i=0;i<m;i++)
for(j=0;j<m;j++)
table[2].moy[j][i]=0;
table[2].n=table[0].n;
for(i=0;i<m;i++)
for(j=0;j<m;j++)
for(h=0;h<m;h++)
table[2].moy[j][i]=table[0].moy[j][h]*table[1].moy[h][i]+table[2].moy[j][i];
puts("le produit est");
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
printf(" %.1f",table[2].moy[i][j]);
printf("\n");
}
}
getch();
}
#include"stdio.h"
#include"conio.h"
#include"stdlib.h"
#include"malloc.h"
struct liste{
unsigned int n;
float **moy;
};
main()
{
struct liste *table=0;
int i,j,h,m;
table=(struct liste*)malloc(3*sizeof(struct liste));/*declaration des trois matrices*/
for(i=0;i<3;i++)
{ if(i!=2)
{printf("donnez la taille de la %d ieme matrice\n",i+1);
scanf("%d",&table[i].n);m=table[i].n;}
table[i].moy=(float**)malloc(m*sizeof(float));
if(i!=2)
printf("donnez les elements de la %d ieme matrice\n",i+1);
for(j=0;j<m;j++)
{
table[i].moy[j]=(float*)malloc(m*sizeof(float));
if(i!=2)
for(h=0;h<m;h++)
scanf("%f",&table[i].moy[j][h]);
}
}
if(table[0].n!=table[1].n)
printf("le produit des deux matrices est impossible");
else{
for(i=0;i<m;i++)
for(j=0;j<m;j++)
table[2].moy[j][i]=0;
table[2].n=table[0].n;
for(i=0;i<m;i++)
for(j=0;j<m;j++)
for(h=0;h<m;h++)
table[2].moy[j][i]=table[0].moy[j][h]*table[1].moy[h][i]+table[2].moy[j][i];
puts("le produit est");
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
printf(" %.1f",table[2].moy[i][j]);
printf("\n");
}
}
getch();
}
abdess111
Messages postés
40
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 mai 2008
1
27 févr. 2008 à 16:32
27 févr. 2008 à 16:32
merci pr le programme.jai bien compri mais je sais pas pr koi tu as utilisé la beblioteque conio ???
et noublie pas de libirer lespace ocupé par les pointeurs :-) merci bcppppp
ah moi jetulise pas mnt dev++ je prefere microsoft visual basic
si tu peu me dire pr koi tu as appellé conio???
merci bcp
et noublie pas de libirer lespace ocupé par les pointeurs :-) merci bcppppp
ah moi jetulise pas mnt dev++ je prefere microsoft visual basic
si tu peu me dire pr koi tu as appellé conio???
merci bcp
mansas87
Messages postés
23
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
31 août 2009
1 mars 2008 à 09:25
1 mars 2008 à 09:25
la fonction getch() est dans la biblioteque conio, c'est pour quoi je l'ai declarée dans la partie globale du prg.Elle permet comme le readln de pascal de visualiser l'execution du prg.
c'est vrai pour l'espace mais des fois il faut laisser les pointeurs pour garder trace des valeurs de des matrices(surtout que l'espace utilisé est tres negligeable dans ce cas)
c'est vrai pour l'espace mais des fois il faut laisser les pointeurs pour garder trace des valeurs de des matrices(surtout que l'espace utilisé est tres negligeable dans ce cas)
abdess111
Messages postés
40
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 mai 2008
1
1 mars 2008 à 12:17
1 mars 2008 à 12:17
ok merci :-)
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
1 mars 2008 à 14:32
1 mars 2008 à 14:32
Salut,
Pour l'info
si jamais tu veux compiler le programme sous Linux au lieu de conio.h il faut utiliser curses.h
Toutefois si tu veux que ton programme soit portable tu n'as pas besoin de conio ou curses
Au lieu de getch() il suffit d'utiliser getchar()
Le prototype se trouve dans stdio.h
Pour l'info
si jamais tu veux compiler le programme sous Linux au lieu de conio.h il faut utiliser curses.h
Toutefois si tu veux que ton programme soit portable tu n'as pas besoin de conio ou curses
Au lieu de getch() il suffit d'utiliser getchar()
Le prototype se trouve dans stdio.h