Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Esercizio su file
Forum - C/C++ - Esercizio su file

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
wicca89 (Normal User)
Rookie


Messaggi: 45
Iscritto: 16/01/2009

Segnala al moderatore
Postato alle 11:48
Lunedì, 08/02/2010
Salve ho questa traccia:
Sia dato un file testo biblioteca.txt. Le informazioni sono così strutturate: Il primo rigo contiene il nome di un libro e dal numero di n copie del libro possedute dalla biblioteca. Seguono esattamente n righe contenente il codice identificativo della posizione di ogni copia seguito dalla sua disponibilità al prestito. Scrivere una programma che dato in input un array di caratteri contenente il nome di un libro, stampi in output il codice di una qualisiasi copia disponibile o un messaggio di errore.

Esempio contenuto biblioteca.txt:
Analisi I
15000 NO
7658 SI

Geometria
9360 SI
782 SI

Programmare in c
6364 NO
11820 SI

Intelligenza artificiale
10933 NO
4563 NO
135 NO

Input:
"Programmare in c"
output:
Disponibile: Codice 11820

Input:
Intelligenza artificiale
output:
Non disponibile.

Io ho fatto questo:

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4.  
  5. int main () {
  6. FILE *fp;
  7.     char linea[256];
  8.     char *divlinea, *space;
  9.     char curremitt[256], maxemitt[256], maxtipo[256];
  10.     char currspett, maxspett=0;
  11.     char libro[256], forario;
  12.     int spo=10;
  13.    
  14.     printf("Dammi il nome del tomo da cercare: ");
  15.     gets(libro);
  16.    
  17.     fp=fopen("biblio.txt","r");
  18.    
  19.     if(fp!=NULL)    {
  20.        while(fgets(linea, 256, fp)!=NULL)
  21.              if(strstr(linea,libro)!=NULL) {
  22.                      printf("%s",linea);
  23.                             fseek(fp,spo,SEEK_CUR);
  24.                              fgets(linea, 256, fp);
  25.                            divlinea = (strstr(linea, "SI"));
  26.                              printf("%s",divlinea);
  27.                            }}
  28.                          
  29.  
  30.        
  31.    
  32.    // else
  33.      //   printf("Impossibile leggere il file\n");
  34.  
  35. fclose(fp);
  36. system("PAUSE");
  37. return 0;
  38.             }



Mi stampa se ci sono i libri ma solo si senza in numero del codice cioè:
Input:
Geometria
Output:
Geometria
Si

Come faccio a fargli stampare anche il numero e anche se sono presenti altri tomi(per esempio Geometria ha 2 SI ma ne stampa uno solo).:ha:hail::hail:il::hail::hail:
Grazie

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 11:58
Lunedì, 08/02/2010
Hai parlato di titolo e numero di copie ... ma non vedo il numero nell'esempio del file ...

E poi, perchè usi la fseek per spostare il puntatore di 10 caratteri? Cosa rappresentano questi 10 caratteri ?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
wicca89 (Normal User)
Rookie


Messaggi: 45
Iscritto: 16/01/2009

Segnala al moderatore
Postato alle 12:09
Lunedì, 08/02/2010
Si praticamente dovrebbe stamparmi per esempio se scrivo geometria:
Geometria
9360 SI
782 SI

Dovrebbe stamparmi ank 9360 ma m stampa solo Si
Fseek invece l'ho usato per farti stampare si anche se non si trovano subito dopo il nome cercato. X farmi capire se scrivo Analisi I
Analisi I
15000 NO
7658 SI
Il si stà al secondo rigo se non uso fseek mi stampa (null) xk controlla solo il rigo "15000 NO" e ho messo 10 per stampare il si al secondo rigo

PM Quote
Avatar
wicca89 (Normal User)
Rookie


Messaggi: 45
Iscritto: 16/01/2009

Segnala al moderatore
Postato alle 12:10
Lunedì, 08/02/2010
Si praticamente dovrebbe stamparmi per esempio se scrivo geometria:
Geometria
9360 SI
782 SI

Dovrebbe stamparmi ank 9360 ma m stampa solo Si
Fseek invece l'ho usato per farti stampare si anche se non si trovano subito dopo il nome cercato. X farmi capire se scrivo Analisi I
Analisi I
15000 NO
7658 SI
Il si stà al secondo rigo se non uso fseek mi stampa (null) xk controlla solo il rigo "15000 NO" e ho messo 10 per stampare il si al secondo rigo

PM Quote
Avatar
wicca89 (Normal User)
Rookie


Messaggi: 45
Iscritto: 16/01/2009

Segnala al moderatore
Postato alle 12:13
Lunedì, 08/02/2010
Si praticamente dovrebbe stamparmi per esempio se scrivo geometria:
Geometria
9360 SI
782 SI

Dovrebbe stamparmi ank 9360 ma m stampa solo Si
Fseek invece l'ho usato per farti stampare si anche se non si trovano subito dopo il nome cercato. X farmi capire se scrivo Analisi I
Analisi I
15000 NO
7658 SI
Il si stà al secondo rigo se non uso fseek mi stampa (null) xk controlla solo il rigo "15000 NO" e ho messo 10 per stampare il si al secondo rigo

PM Quote
Avatar
wicca89 (Normal User)
Rookie


Messaggi: 45
Iscritto: 16/01/2009

Segnala al moderatore
Postato alle 12:17
Lunedì, 08/02/2010
Si praticamente dovrebbe stamparmi per esempio se scrivo geometria:
Geometria
9360 SI
782 SI

Dovrebbe stamparmi ank 9360 ma m stampa solo Si
Fseek invece l'ho usato per farti stampare si anche se non si trovano subito dopo il nome cercato. X farmi capire se scrivo Analisi I
Analisi I
15000 NO
7658 SI
Il si stà al secondo rigo se non uso fseek mi stampa (null) xk controlla solo il rigo "15000 NO" e ho messo 10 per stampare il si al secondo rigo

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 12:19
Lunedì, 08/02/2010
Perchè rispondi 4 volte??

Non hai risposto alla mia domanda ... parlavi di un numero di libri oltre al titolo ma questo numero non c'e' nell'esempio ... vuoi chiarire?

L'uso della fseek in quel modo è assurdo ... chi ti dice che siano sempre 10 caratteri? Anzi, la fseek non va proprio usata ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
wicca89 (Normal User)
Rookie


Messaggi: 45
Iscritto: 16/01/2009

Segnala al moderatore
Postato alle 12:27
Lunedì, 08/02/2010
Non lo so perchè ha risposto 4 volte io ho scritto solo una volta.
Cmq questa è una traccia di un'esame e ho copiato esattamente quello ke c'è scritto non so che dire...tralasciando la riga del numero di copie come lo concludo?
fseek ho provato ad usarlo perchè solo in questo modo che ho provato per non farmi stampare null se sapevo come completare l'esercizio non avrei aperto il post.

PM Quote
Avatar
wicca89 (Normal User)
Rookie


Messaggi: 45
Iscritto: 16/01/2009

Segnala al moderatore
Postato alle 12:32
Lunedì, 08/02/2010
Non lo so perchè ha risposto 4 volte io ho scritto solo una volta.
Cmq questa è una traccia di un'esame e ho copiato esattamente quello ke c'è scritto non so che dire...tralasciando la riga del numero di copie come lo concludo?
fseek ho provato ad usarlo perchè solo in questo modo che ho provato per non farmi stampare null se sapevo come completare l'esercizio non avrei aperto il post.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo