Bones de nou

Ja començo examens (dilluns) i per aquest dia he de presentar un exercici que 
no tinc ni ***** de com fer-lo... la cosa és que és com el de XGL, però aquest 
dóna fins a 2 punts extres... (veient el simulacre d'examen que vam fer abans 
d'ahir, els necessitaré :( ). S'ha de presentar dilluns.... és un altre cop per 
entorn LÍNUX. Suposo que serà per ANSI C... i és amb tractament de fitxers (jo 
d'això no tinc ni ideia... vaig arribar a entendre les matrius... els 
punters,fitxers,cues/llistes/piles els vam donar rapidíssim i no vaig captar 
res l'any passat... així que ho duc xungo :/ )

Aquí us deixo l'anunciat i el que porto fet per ara... hi ha coses malament, ho 
sé, però és un primer esboç agafant troços d'exemples de l'any passat :/

He estat cercant pel tiet Google i ... i no acabo de captar les sintaxis i tal 
:/
Crec que necessito els 'fprintf' i 'fscanf', i llavors el "fseek" :? No he 
acabat de pillar-els-hi el què i com usar-los :/ 
El que tinc clar és:
1. Necessito llegir les línies que a cada línia hi hauria d'haver un array[] 
que és el que he de pillar (o paraula vamos :P )
2. A cada array, comparar el array[0] amb el codi ascii per saber-ne la primera 
lletra.
3. Cada cop que tingui una lletra nova, posar la direcció de la línia dins de 
l'array índex, la 'a' al primer, etc... (com sé la direcció???)
4. copiar d'un arxiu a un altre quan m'entrin una paràula nova (suposo que ho 
sabria fer.. no n'estic segur)

Bé, més o menys els punts estan clars... el "com" està desaparegut :/


Anunciat:
 Pràctica: El diccionari (OPCIONAL I EXTRA: +2 punts) 
Fer un programa que gestioni un diccionari que haurà d'emmagatzemar-se en un 
fitxer. A memòria, com a molt, podré 
emmagatzemar una taula amb 28 posicions (una per a cada lletra), en la que 
guardaré la posició a on es troba la primera 
paraula que comença per aquella lletra dins del fitxer. Aquesta taula la podré 
guardar, entre execucions, a un altre fitxer. 
Les operacions que hauré de permetre sobre el diccionari seran: 
1. Alta de paraula (farem una còpia en un arxiu temporal i després el 
renombrarem) 
2. Baixa de paraula (igual que la opció 1) 
3. Consulta de totes les paraules que comencin per una certa lletra 
La consulta haurà de fer servir l'índex que ens indica a quina posició del 
fitxer comencen les paraules de cada lletra. 
En aquest exercici ens centrarem en agrupar les paraules que comencin per la 
mateixa lletra i, per tant, no ens importarà 
tant l'ordre intern de les paraules que coincideixin en la seva primera lletra. 
Per tant, generarem el fitxer de forma que les 
paraules estiguin ordenades per ordre alfabètic de la primera lletra (les demés 
no compten per a l'ordre).



#include <stdio.h>
#include <string.h>


FILE *fdades;  //arxiu diccionari-estàtic
FILE *faux;  //arxiu auxiliar-dinàmic
char fitxa[7]="estatic"; //nom arxiu estàtic
char fitxb[7]="dinamic"; // nom arxiu dinàmic
int index[28]; //índex del diccionari

char paraula[32]: //paraula del diccionari.
int ipara; //index de 'paraula[]'
void obrir();
void index();

faux=fopen(fitxb,"w");

 void obrir()
 {
 //s'obre i es tanca en mode a+ per crear l'arxiu si no existeix
 if ((fdades=fopen("c:/diccio.txt","a+"))==NULL)
 {
  printf("no s'ha pogut crear el fitxer\n");
  exit(0);
 }
 fclose(fdades);
 
 //convino aquest obrir amb l'anterior perque si no existeix no el pot obrir
 if ((fdades=fopen("c:/diccio.txt","r+"))==NULL) // +r ò +w??
 {
  printf("no es pot obrir\n");
  exit(0);
 }
 }

 void index()
 {    //fer-ho de manera que miri els caracters fins que hi hagi canvi de 
caracter.
    j=cadena[0];
//Comprovar el ASCII --> 64 - 91 a-z 96 - 123 A-Z <-- :?.  (entre minus i majus 
32 de diferencia)
      // if ((j<123)&&(j>96))  
    int i=64, h=96;
       if ((j!=i)&&(j!=h))
         { i++; h++; paraula[ipara]=fseek; //<----- establir la nova línia!!

 // printf("%c",j);
 }
 }

void main()
{

}

Gràcies :D

Ps. Juer, porto uns dies que no paro de demanar :/
_______________________________________________
llista de correu de l'Internauta
[email protected]
http://zeus.internauta.net/mailman/listinfo/internauta

Respondre per correu electrònic a