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++ - 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: 6403
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: 6403
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: 6403
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