Communauté Informatique NDFR.net : [Besoin d'aide]Projet en langage C : pointeurs et allocation mémoire - Programmation (C/C++, Delphi, VB, etc.)
Reply
[Besoin d'aide]Projet en langage C : pointeurs et allocation mémoire
Thread Tools Display Modes
  #1  
Old 06-11-2005, 22:15
fonji fonji is offline
Membre senior
 
Join Date: 01-07-2003
Age: 40
Posts: 1,627
J'ai fait un peu de C aux cours de microprocesseurs, autant dire que je m'y connais encore moins que toi...

Je suis vraiment désolé, mais je peux pas t'aider...
Il y'a quelques codeurs par ici mais je sais pas si l'un d'eux arrivera vraiment à te sortir de là.

Tout ça pour DEUX crédits, ils abusent un peu je trouve... Et faire ça en deux semaines, même à 100%, je trouve vraiment pas ça raisonnable.
Pour un projet comme ça, faut déjà au moins une semaine pour faire le rapport, et une semaine pour comprendre un peu l'histoire avant de faire une analyse correcte...
Explique ça dans ton rapport au moins, parce que là, si tu arrives à quelque chose, ben t'es franchement un sur-homme...

EDIT : après avoir un peu relu, ce qu'il faut que tu fasses c'est un programme qui "ouvre" un fichier texte, lit ce qu'il y'a dedans et le stocke en mémoire, et "ferme" le fichier... J'ai bien tout compris docteur ?
En php c'est tout simple, en C je sais pas, mais finalement, en deux semaines ça devrait être jouable...

Les méthodes sont identiques à celles de php, la difficulté réside dans l'allocation de mémoire (malloc), là je peux pas t'aider.
Je crois que FILE n'est pas un type natif de c, mais tu dois bien pouvoir trouver de la documentation pour ça... Je suppose que Samva doit avoir une idée derrière l'oreille pour ça...
Reply With Quote
  #2  
Old 07-11-2005, 00:37
Samva's Avatar
Samva Samva is offline
Niaisüre within
 
Join Date: 24-04-2003
Location: Tours
Age: 41
Posts: 2,320
Send a message via ICQ to Samva Send a message via MSN to Samva
Bon alors déjà j'apprécie la nature du post, interessante, bien menée et avec de la recherche, je vais donc t'aider un brin

Il me semble que tu as réellement bien saisi la première partie du projet, l'allocation mémoire se faisant (selon moi et la rapide relecture que j'en ai fait) totalement correcte.

Pour ce qui est de la seconde, je vais tenter d'éclairer un peu tes lanternes. Le type FILE est un type permettant de manipuler les fichiers (fantastique n'est ce pas) à l'aide des fonctions de manipulations des flux. Le reste des fonctions est pour le moins bien décris et il ne te reste qu'à mettre les phrases sous forme algorithmique, je vais néanmoins tâcher de te montrer rapidement la voie.

Premièrement, l'ouverture du fichier texte contenant les valeurs des pixels qui suivent la structure, typiquement :
Code:
FILE* ouvre(char* nomfichier){
FILE* f;
if (f=fopen(nomfichier,"r")) //ouvre le fichier en lecture et retourne le pointeur
    return f;
//else (gestion de l'erreur...); //traitement éventuel de l'erreur d'ouverture...

}
Avec cette petite fonction tu es capable d'ouvrir un fichier, ensuite te reste à lire la première ligne (en te référant à la structure donnée) pour connaître le nombre d'éléments contenus dans le fichier (et donc la taille de la structure shred à instancier).
C'est donc là que tu dois faire appel à la mystérieuse fonction fgets, puis extraire la valeur présente apres le deuxieme espace de la premiere ligne. Cette valeur (qui est alors encore une chaine) doit subir un passage par atoi pour retourner l'entier qui te servira à instancier ta structure de données... pas simple, on va voir ca :
Code:
//methode lisant le fichier ouvert au préalable et retournant le nombre d'élément
int nbElem(FILE* f){
char temp[64];
char resultat[25];
int pos=0 ,compt=0, i=0;
//je considere qu'on vient d'ouvrir le fichier, sinon ca merde...
fgets(temp, 64, f);
while (temp[i]!=0){
  if (compt=-1) //si on est arrivé au chiffre
       resultat[pos++]=temp[i]; //on recopie chaque chiffre dans le resultat pour l'atoi

   if (temp[i]==' ') { //compte le nombre d'espace
        compt++;
        if (compt==2) compt=-1; //arrivé au deuxieme, passage a -1 pour savoir qu'on est dans la lecture du chiffre
   }

i++;
}
resultat[pos]=0; //termine la chaine
return atoi(resultat);
}
A l'issue de cette fonction, le nombre d'élement du tableau est récupéré. J'avoue que la méthode est un poil goré, j'ai fait le code comme il est venu, j'ai pas compilé donc ca peut ne pas marcher, cependant, le squelette doit être correct.
Pour résumer, lecture de la premiere ligne du fichier préalablement ouvert, on parcours ce qu'on vient de lire caractère par caractère et on note chaque espace rencontré, après le deuxième espace rencontré on lit le nombre d'éléments, puis on retourne le résultat sous forme d'entier. (A noter qu'il est plus facile de faire tout ca en utilisant les fonctions sur les Strings mais je ne sais pas si tu y as droit, je ne veux donc pas te compliquer...)

Ensuite pour l'ajout des données correspondant aux bords droit et gauche, tu appliques une methode sensiblement similaire en ajoutant le premier chiffre lu sur ton fils gauche et l'autre sur le fils droit. Un parcours de l'ensemble du fichier est necessaire, a chaque espace tu changes l'affectation droite/gauche.

N'oublies pas de fermer le fichier en fin et toucheras au but.

J'espere que tout ceci t'auras éclairé, néanmoins j'avoue que j'ai fait ca un peu à l'arrache et que j'ai rien vérifié, si tu as d'autres question n'hésite pas a venir poster ici...

Bon je retourne à ce datasheet de gniiii....
__________________
For the End-of-the-World spell, press "Ctrl, Alt, Delete."



Last edited by Samva; 07-11-2005 at 00:47.
Reply With Quote
Reply

Bookmarks


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Le point sur la mémoire DDR chez VTR-Hardware Benjy Actualité 0 20-03-2005 20:58
Quel prix pour de la mémoire? DERFFRED Discussions 5 28-01-2005 17:00
Memoire CAche d'un Athlon inu974 Matériel 7 21-06-2004 11:55
Mémoire virtuelle et mémoire vive Mockyl'ordi Windows NT4/2000/XP Client 2 06-01-2004 19:01
Mémoire claude922 Matériel 10 29-10-2002 20:38

All times are GMT +2. The time now is 23:04.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.