Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema esercizio sui file
Forum - C/C++ - Problema esercizio sui file

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


Messaggi: 45
Iscritto: 16/01/2009

Segnala al moderatore
Postato alle 11:40
Domenica, 24/01/2010
Salve ragazzi vi prego aiutatemi con questo esercizio sui file :hail::hail: non riesco proprio a venirne a capo8-|:(

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

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6068
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 11:42
Domenica, 24/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à.
PM Quote
Avatar
wicca89 (Normal User)
Rookie


Messaggi: 45
Iscritto: 16/01/2009

Segnala al moderatore
Postato alle 11:48
Domenica, 24/01/2010
dello svolgimento in generale ho una mezza idea :
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4.  
  5.  
  6. int main () {
  7.     FILE *fp,*file;
  8.     char stringa[256],a[256];
  9.     int orario,i,n;
  10.     char s;
  11.    
  12.     printf("Dammi un orario per sapere i programmi trasmessi: ");
  13.     scanf("%d",&orario);
  14.    
  15.     fp=fopen("auditel.txt","r");
  16.        
  17.     if(fp!=NULL){
  18.                  while(!feof(fp)) {
  19.                                   fscanf(fp,"%s",stringa);
  20.                                   for(i=0;i<256;i++) {
  21.                                   if(i==orario) {
  22.                                                 printf("%s",stringa[i]);
  23.                                                                 }}
  24.                            }
  25.                            }
  26.  
  27.     fclose(fp);



Ma ovviamente non funziona :nono:

PM Quote
Avatar
wicca89 (Normal User)
Rookie


Messaggi: 45
Iscritto: 16/01/2009

Segnala al moderatore
Postato alle 11:49
Domenica, 24/01/2010
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 :hail::hail:

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6068
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 12:45
Domenica, 24/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++

  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main()
  5. {
  6.     FILE *fp;
  7.     char linea[256];
  8.     char *divlinea, *space;
  9.     char curremitt[256], maxemitt[256], maxtipo[256];
  10.     int currspett, maxspett=0;
  11.     int orario, forario;
  12.      
  13.     printf("Dammi un orario per sapere i programmi trasmessi: ");
  14.     scanf("%d", &orario);
  15.      
  16.     if(fp=fopen("auditel.txt","r"))
  17.     {
  18.         fgets(linea, 256, fp);
  19.         while(!feof(fp))
  20.         {
  21.             forario = atoi(linea);
  22.             if(forario==0)
  23.             {
  24.                 strcpy(curremitt, linea);
  25.                 curremitt[strlen(curremitt)-1]='\0';
  26.             }
  27.  
  28.             if(forario==orario)
  29.             {
  30.                 divlinea = strchr(linea, '|');
  31.                 currspett = atoi(divlinea+1);
  32.                 if(currspett>maxspett)
  33.                 {
  34.                     maxspett = currspett;
  35.                     strcpy(maxemitt, curremitt);
  36.                                        
  37.                     space=strchr(linea, ' ');
  38.                     strcpy(maxtipo, space+1);
  39.                     maxtipo[divlinea-space-1]='\0';
  40.                 }
  41.             }
  42.  
  43.             fgets(linea, 256, fp);
  44.         }
  45.  
  46.         fclose(fp);
  47.  
  48.         printf("%d %s %s\n", orario, maxemitt, maxtipo);
  49.     }
  50.     else
  51.         printf("Impossibile leggere il file\n");
  52.  
  53.     return 0;
  54. }


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à.
PM Quote
Avatar
wicca89 (Normal User)
Rookie


Messaggi: 45
Iscritto: 16/01/2009

Segnala al moderatore
Postato alle 15:20
Domenica, 24/01/2010
Grazie x l'aiuto e non ha bisogno di modifiche :k: 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

  1. fp=fopen("auditel.txt","r");
  2.    
  3.     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
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6068
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 15:24
Domenica, 24/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à.
PM Quote
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 15:49
Domenica, 24/01/2010
Stai usando il Dev-c++? Se non ricordo male quello aveva di default parecchie funzioni.

PM Quote
Avatar
wicca89 (Normal User)
Rookie


Messaggi: 45
Iscritto: 16/01/2009

Segnala al moderatore
Postato alle 15:58
Domenica, 24/01/2010
si uso il dev e dichiaro solo #include <stdio.h> poi dipende da quello che devo fare ne metto altre :D

Ultima modifica effettuata da wicca89 il 24/01/2010 alle 15:58
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo