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