begin process at 2012 05 29 20:40:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

probleme avec stucture


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

probleme avec stucture

samedi 17 juillet 2010 à 17:51:34 | probleme avec stucture

vercd7am

bonjour, j'explique mon probleme.

J'utilise en ce moment spatstat pour mon memoire sur les processus ponctuels. Le probleme est qu'il se montre incapable de calculer rapidement ce que je lui demande vu la taille des processus generes. J'ai donc decide de programmer mes calculs en c.
Je souhaite pouvoir rentrer dans une structure contenant des float les coordonnees des points de mes processus. J'ai donc ecrit dans un fichier txt le nombre de points et dans un autre toutes mes coordonnees. Je recupere mon nombre de points
Code C/C++ :
int taille=0;

    FILE* fichier=NULL;

    fichier = fopen("C:\\Documents and Settings\\Qui qui quoi dont ou\\Plocha\\Memoire\\nombreDePoints.txt","r");

    fscanf(fichier,"%d", &taille );

    printf("%d",taille);


jusque la pas de problemes. mais apres je cale. Je veux faire une structure
Code C/C++ :
struct coordonnees
{
    float x;
    float y;
};


avec exactement le nombre dont j'ai besoin, c'est a dire taille, pour y rentrer mes coordonnees qui sont dans mon autre fichier txt. Est-ce qu'ecrire ca
Code C/C++ :
struct coordonnees processus; // je cree une structure de type coordonnee qui s'appelle processus
    struct point* points= &processus; // je cree un pointeur sur ma structure processus

    points = (struct point*)malloc(20* sizeof(struct point*));

c'est correct???

Quand je rentre
Code C/C++ :
printf("%p\n\n", points);


il me renvoie bien un adresse qui a priori est celle de la premiere case du premier tableau de float (je n'en suis vraiment pas sur...) mais apres, je ne sais pas comment parcourir mes deux tableaux, regarder ce qu'il y a dedans donc je ne peux pas y rentrer mes valeurs.
Pourriez-vous m'aider. Merci d'avance.
samedi 17 juillet 2010 à 18:36:51 | Re : probleme avec stucture

TychoBrahe

Salut,

Code C/C++ :
struct coordonnees processus; // je cree une structure de type coordonnee qui s'appelle processus
    struct point* points= &processus; // je cree un pointeur sur ma structure processus

    points = (struct point*)malloc(20* sizeof(struct point*));

Attention à ne pas confondre le nom de ta structure avec le nom de tes variables ! Sinon, ta variable processus ne sert à rien ici, ceci est largement suffisant :
Code C/C++ :
struct coordonnees *points;

points = (struct coordonnees *)malloc(20 * sizeof(*points));


Pour afficher le contenu du tableau :
Code C/C++ :
int i;

for (i = 0; i < 20; i++)
    printf("x: %f, y: %f\n", points[i].x, points[i].y);


Et on oublie surtout pas de libérer la mémoire quand on a plus besoin de la variable :)
Code C/C++ :
free(points);


Bien entendu, je suppose que le nombre sera en réalité ta variable taille contenant le nombre de points à avoir, si ce n'était pas le cas, utiliser malloc n'aurait pas été recommandé.
samedi 17 juillet 2010 à 19:00:49 | Re : probleme avec stucture

vercd7am

Merci pour cette reponse rapide.
J'ai ete bete, au depart ma structure s'appelait
Code C/C++ :
 struct point
mais par clarte pour moi je l'avait transforme en
Code C/C++ :
 struct coordonnees
et j'ai oublie de le changer dans les lignes d'apres.
Ici j'avais mis 20 a la place de taille pour tester.
Par contre je ne comprends pas vraiment pourquoi on ecrit
Code C/C++ :
sizeof(*points)
donc un sizeof du pointeur et pas
Code C/C++ :
sizeof(struct coordonnees)
sizeof de la structure.
malloc me renvoie un pointeur et me reserve la place demande. La structure veut deux float pour l'abcisse et l'ordonnee. Apparement c'est con de demander (taille*la taille de deux floats) mais je ne comprends pas pourquoi. Ou plutot je dois mal comprendre malloc sans doute.
En tout cas, ca a l'air de bien marche.
samedi 17 juillet 2010 à 19:40:49 | Re : probleme avec stucture

TychoBrahe

Ici, sizeof(*points) et sizeof(struct coordonnees) sont identiques : points étant un pointeur vers une struct coordonnees, *points est une struct coordonnees. En général on préfère écrire le sizeof avec la variable plutot qu'avec le type en dur (meilleur lisibilité et si jamais plus tard tu change le type de ta variable, pas besoin de modifier le sizeof avec, ce qui peu t'éviter de jolis bugs causés par un oubli).
samedi 17 juillet 2010 à 23:50:13 | Re : probleme avec stucture

vercd7am

Réponse acceptée !
Merci bien. Ca m'aura ete bien utile ce passage par le forum.


Cette discussion est classée dans : points, taille, code, processus, coordonnees


Répondre à ce message

Sujets en rapport avec ce message

Nom d'utilisateur [ par gibozsec ] Je cherche a récupérer le nom de l'utilisateur qui a lancé le programme. J utilise le code suivant avec MS Visual Studio 6.0 et XP home :LPTSTR tampon Terminer un processus [ par LordBob ] Bonjour a tous,voila j'essaie de fermer un processus (celui de MSN Messenger), j'ai donc fait comme ceci:TerminateProcess((FindWindow("msnmsgr.exe", N probleme avec CreateFile [ par Roudy ] Je veux créer un fichier qui contiendra le path de tout les processus a killer mais le probleme c que mon fichier ne veux pas rajouter les ligne dans Processus (HWP) multiple C sous UNIX? [ par cbismuth ] Bonjour à tous!Une question me rend fou depuis plusieurs jours...Je souhaite créer N processus (HWP, pas des threads) en C sous UNIX avec une boucle " taille de matrice [ par MLine ] Dans c++ builder 5, je déclare une matrice dans ma classe Organism :class Organism{ // plein d'autres trucs protected : static float DispCoef envoi de fichier par socket [ par Anacr0x ] bon vouala, j'ai crée un serveur et un client, tt se passe bien, il parle entre eux et tt et tt. Par contre, quan je veu envoyer un fichier, ca merd ! Gestion et partage de mémoire [ par RaSa ] Bonjour à tous,Je pensais avoir une idée assez claire de la manière dont windows gère la mémoire. En me penchant sur l'interface IDataObject de COM (e modifier la taille d'un controle "StaticText" dynamiquement via code [ par Enzototo ] Bonjour,Je suis grand débutant sur VC .NET mais je connais bien le C et un peu la programmation objet ; j'ai aussi déjà un peu développé sur VC++ 6.Je graphique cpp [ par gabriel_jm ] bonjour,je suis en train de faire un programme qui génère des points à l'aide de devcpp, ces points pourront avoir jusqu'à 6 coordonnées ( 3 coordonne Pour les pros -> Incidence de la STL sur la taille du code. [ par lordkraken ] Bonjour,j'essaie de minimiser la taille du code. d'une petite DLL que je programme actuellement.Or j'utilise depuis hier des vector, issus directement


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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 : 3,432 sec (4)

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