wicca89 (Normal User)
Rookie
Messaggi: 45
Iscritto: 16/01/2009
|
Salve ragazzi vi prego aiutatemi con questo esercizio sui file non riesco proprio a venirne a capo
Esercizio 5 (max 7)
Sia dato un file testo auditel.txt. Le informazioni sono così strutturate: il primo rigo contiene il nome dell’emittente. Per ogni emittente, seguono due righe contenenti un orario e il tipo di trasmissione seguito dal carattere ‘|’ e dal numero di telespettatori. Scrivere una function che dato in input un orario, stampi il nome dell’emittente e il tipo di trasmissione che hanno ottenuto il maggior numero di telespettatori.
Input: 23
statistiche.txt
Rai 1<eoln>
21 Telefilm*3418<eoln>
23 Varieta’*984<eoln>
Rai 2<eoln>
21 Telefilm*2091<eoln>
23 Varieta’*865<eoln>
Rai 3<eoln>
21 Varieta’*1618<eoln>
23 Documentario*452<eoln>
Canale 5<eoln>
21 Telefilm*2362<eoln>
23 Film*994<eoln>
Italia 1<eoln>
21 Varieta’*2662<eoln>
23 Sport*804<eoln>
Rete 4<eoln>
21 Film*1207<eoln>
23 Film*663<eoln><eof>
Output:
23 Canale 5 Film
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6403
Iscritto: 03/01/2010
|
Hai provato a suddividere in piccoli problemi tutto l'esercizio?
E risolvere i piccoli problemi uno dopo l'altro?
Dove trovi difficoltà?
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à. |
|
wicca89 (Normal User)
Rookie
Messaggi: 45
Iscritto: 16/01/2009
|
dello svolgimento in generale ho una mezza idea :
Codice sorgente - presumibilmente C++ |
#include <stdio.h> #include <string.h> int main () { FILE *fp,*file; char stringa[256],a[256]; int orario,i,n; char s; printf("Dammi un orario per sapere i programmi trasmessi: "); scanf("%d",&orario); fp=fopen("auditel.txt","r"); if(fp!=NULL){ while(!feof(fp)) { fscanf(fp,"%s",stringa); for(i=0;i<256;i++) { if(i==orario) { printf("%s",stringa[i]); }} } } fclose(fp);
|
Ma ovviamente non funziona
|
|
wicca89 (Normal User)
Rookie
Messaggi: 45
Iscritto: 16/01/2009
|
vi prego aiutatemi se non fosse che domani ho l'esame di programmazione e qst è una traccia di un vecchio compito mi sarei applicata da sola
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6403
Iscritto: 03/01/2010
|
Probabilmente ci avresti dovuto pensare un po' prima ... se domani hai l'esame e non sai fare "al volo" questo tipo di compiti, allora la vedo male ...
Comunque, anche se scritto velocemente (probabilmente da correggere da qualche parte e da ottimizzare), prendi spunto da questo codice ...
Codice sorgente - presumibilmente C++ |
#include <stdio.h> #include <string.h> int main() { FILE *fp; char linea[256]; char *divlinea, *space; char curremitt[256], maxemitt[256], maxtipo[256]; int currspett, maxspett=0; int orario, forario; printf("Dammi un orario per sapere i programmi trasmessi: "); scanf("%d", &orario); if(fp=fopen("auditel.txt","r")) { fgets(linea, 256, fp); while(!feof(fp)) { forario = atoi(linea); if(forario==0) { strcpy(curremitt, linea); curremitt[strlen(curremitt)-1]='\0'; } if(forario==orario) { divlinea = strchr(linea, '|'); currspett = atoi(divlinea+1); if(currspett>maxspett) { maxspett = currspett; strcpy(maxemitt, curremitt); space=strchr(linea, ' '); strcpy(maxtipo, space+1); maxtipo[divlinea-space-1]='\0'; } } fgets(linea, 256, fp); } fclose(fp); printf("%d %s %s\n", orario, maxemitt, maxtipo); } else printf("Impossibile leggere il file\n"); return 0; }
|
Ultima modifica effettuata da nessuno il 24/01/2010 alle 12:46
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à. |
|
wicca89 (Normal User)
Rookie
Messaggi: 45
Iscritto: 16/01/2009
|
Grazie x l'aiuto e non ha bisogno di modifiche intanto avevo fatto una cosa del genere ma senza il controllo del carattere "|".
L'unica modifica che ho apportato e'l'apertura del file l'ho messa a parte e nell'if il controllo perchè mi sembrava più ordinato:
Codice sorgente - presumibilmente Plain Text |
fp=fopen("auditel.txt","r");
if(fp!=NULL) {
|
Non so se puoi spiegarmi una cosa...atoi sapevo che faceva parte della libreria stdlib.h
ma funziona anche senza come mai??ank su un link girando per google ho trovato k appartiene a stdlib.h e grazie ancora!
Ultima modifica effettuata da wicca89 il 24/01/2010 alle 15:23 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6403
Iscritto: 03/01/2010
|
stdlib.h NON è una libreria ma un semplice file include.
A seconda dell'ambiente in cui operi, alcuni include potrebbero essere aggiunti di default ...
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à. |
|
Lawliet (Normal User)
Expert
Messaggi: 386
Iscritto: 09/04/2009
|
Stai usando il Dev-c++? Se non ricordo male quello aveva di default parecchie funzioni.
|
|
wicca89 (Normal User)
Rookie
Messaggi: 45
Iscritto: 16/01/2009
|
si uso il dev e dichiaro solo #include <stdio.h> poi dipende da quello che devo fare ne metto altre
Ultima modifica effettuata da wicca89 il 24/01/2010 alle 15:58 |
|