PDA

View Full Version : Non so più a chi rivolgermi...


logan125842
16-01-2004, 14:19
Una coppia di comandi che devono essere lanciabili da linea di comando (DOS, in modo che funzioni su tutti i SO i Windows). Si dovrà dividere in due parti: 1 - richiede ed effettua l'indicizzazione di una parte del disco ( da una data directory in giù ); 2 - effettua una ricerca all'interno dell'indicizzazione effettuata in precedenza;

Il primo algoritmo potrà avere diversi parametri e deve essere in grado di indicizzare almeno tutti i file di un determinato tipo (ad esempio tutti i
txt) per le directory appartenenti ad un dato sottoalbero. Il tutto deve essere salvato all'interno di una struttura dati adeguata allo scopo e resa permanente su file.

Il report del primo comando deve contenere le dimensione totale dei files trattati, la dimensione dei singoli file, il tempo di elaborazione per tutta l'indicizzazione, il tempo di elaborazione per l'indicizzazione di un singolo file, ecc. ( il resto dei possibili valori è lasciato alle decisioni del singolo gruppo ).


La ricerca dovrà essere fatta in base a delle parole chiave e dovrà restituire anche le occorrenze della parola chiave nei singoli files (ad esempio se effettuate la ricerca con la parola "pippo" la ricerca dovrà restituire i file contenenti la parola ricercata e per ogni singolo file il numero di occorrenze della parola nel file.



Questo è l'esame di programmazione che dovrò consegnare a feb....nessuno può aiutarmi???????

Non so come fare a cercare i file sull'hd e analizzarli...

cionci
16-01-2004, 14:38
Non hai detto diverse cose fondamentali: linguaggio e compialtore...

Ti volevo inoltre far notare che hai la firma irregolare... Deve essere max 3 righe @800x600 le tue sono 5 @1024x768... Se puoi correggere... Grazie ;)

logan125842
16-01-2004, 14:44
scusa C,borland c....ora cambio la firma..

cionci
16-01-2004, 14:51
Guardati le funzioni:

findfirst
findnext
findclose


* FFIND.C: This program uses the 32-bit _find functions to print
* a list of all files (and their attributes) with a .C extension
* in the current directory.
*/

#include <stdio.h>
#include <io.h>
#include <time.h>

void main( void )
{
struct finddata_t c_file;
long hFile;

/* Find first .c file in current directory */
if( (hFile = findfirst( "*.c", &c_file )) == -1L )
printf( "No *.c files in current directory!\n" );
else
{
printf( "Listing of .c files\n\n" );
printf( "\nRDO HID SYS ARC FILE DATE %25c SIZE\n", ' ' );
printf( "--- --- --- --- ---- ---- %25c ----\n", ' ' );
printf( ( c_file.attrib & _A_RDONLY ) ? " Y " : " N " );
printf( ( c_file.attrib & _A_SYSTEM ) ? " Y " : " N " );
printf( ( c_file.attrib & _A_HIDDEN ) ? " Y " : " N " );
printf( ( c_file.attrib & _A_ARCH ) ? " Y " : " N " );
printf( " %-12s %.24s %9ld\n",
c_file.name, ctime( &( c_file.time_write ) ), c_file.size );

/* Find the rest of the .c files */
while( findnext( hFile, &c_file ) == 0 )
{
printf( ( c_file.attrib & _A_RDONLY ) ? " Y " : " N " );
printf( ( c_file.attrib & _A_SYSTEM ) ? " Y " : " N " );
printf( ( c_file.attrib & _A_HIDDEN ) ? " Y " : " N " );
printf( ( c_file.attrib & _A_ARCH ) ? " Y " : " N " );
printf( " %-12s %.24s %9ld\n",
c_file.name, ctime( &( c_file.time_write ) ), c_file.size );
}

findclose( hFile );
}
}

Per cercare una stringa all'interno di un file basta aprirlo in sola lettura e scorrere il file byte per byte cercando l'occorrenza del primo carattere (se trovi il primo caratttere il carattere successivo deve essere il secondo della stringa da trovare...e così via)...

logan125842
16-01-2004, 14:59
siccome ora sono in università non posso vedere delle cose sul compilatore mi sapresti dire come faccio a cambiare directory...e fare l'indicizzazione del file...(X indicizzazione dato che il 1° post è quello che ci ha dato il prof penso intenda: ordinare tutto il contenuto del file in ordine alfabetico... numerarli x poi andarli a recuperare con più facilità....)

cionci
16-01-2004, 15:06
chdir per cambiare directory...

Per "indicizzare i file"...non capisco cosa intenda...
Mi dispiace...

logan125842
16-01-2004, 15:10
comunque...come faccio dopo aver letto tutti i file di una directory a leggere il contenuto byte x byte e poi ordinare il contenuto su un'altro file? (te ne sarei riconoscente non so più dove :muro: )

cionci
16-01-2004, 15:31
Con le funzioni:

fopen
fread
fwrite
fclose