Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Non lo so perchè ha risposto 4 volte io ho scritto solo una volta.
Continui a rispondere piu' volte ... fai un solo click sul "send" e attendi ...
Testo quotato
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?
Non puoi tralasciare nulla perchè il programma si fa in un certo modo se ci sono scritte certe cose, o in un altro se ce ne sono scritte altre. Il testo dice
"Il primo rigo contiene il nome di un libro e dal numero di n copie del libro possedute dalla biblioteca"
Quindi dovrebbe essere, ad esempio
Analisi I 2
15000 NO
7658 SI
Geometria 2
9360 SI
782 SI
Programmare in c 2
6364 NO
11820 SI
Intelligenza artificiale 3
10933 NO
4563 NO
135 NO
In questo modo, sai quante righe devi leggere in seguito (e lo fai tramite un ciclo for, che manca nel tuo programma).
Quindi dovrai
1) leggere la prima linea (ti consiglio una fscanf in modo da separare i due dati, il titolo e il numero di copie)
2) se il libro è quello che cerchi (confrontando il titolo) allora esegui un ciclo for (da 0 a n-1) per leggere le altre informazioni
3) esamini le varie linee in input cercando il SI; se lo trovi, stampi la linea in questione e termini, altrimenti, se termina il ciclo senza aver trovato nulla, evidenzi un messaggio d'errore.
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à.
numvol=atoi(divlinea+1);//uguale al carattere dopo il ^
fgets(carsi, 256, fp);
space =strchr(carsi, ' ');
if(strstr(carsi, "SI")){
printf("%s",carsi);
}
}
}
}
else
printf("Impossibile leggere il file\n");
fclose(fp);
system("PAUSE");
return0;
}
ho fatto il mio biblio.txt in qst modo:
Analisi I^2
15000 NO
7658 SI
Geometria^2
9360 SI
782 SI
Programmare in c^2
6364 NO
11820 SI
Intelligenza artificiale^3
10933 NO
4563 NO
135 NO
Quindi se faccio:
Input:
Geometria
output:
Geometria^2
9360 SI
mi date una mano per stampare anche l'altro si xk mi controlla solo la prima riga per lo meno spiegatemi come devo muovermi! grazie in anticipo
Grazie cmq a tutti sono riuscita da solo mettendo un int control=0 e ponendolo a 1 se trova si altrimenti se rimane 0 stampa k nn c sn libri disponibili
Codice sorgente - presumibilmente C++
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main (){
FILE*fp;
char linea[256],carsi[256];
char*divlinea, *car_si, *space;
char libro[256];
int numvol,a=0,control=0;
printf("Dammi il nome del tomo da cercare: ");
gets(libro);
fp=fopen("biblio.txt","r");
if(fp!=NULL){
while(!feof(fp)){
fgets(linea, 256, fp);
if(strstr(linea,libro)!=NULL){
printf("%s",linea);
divlinea=(strchr(linea,'^'));
numvol=atoi(divlinea+1);//uguale al carattere dopo il ^