Aiuto su un progetto semplice in C++
- COM_EASYSOCIAL_GUEST_NAME
-
Autore della discussione
- Visitatori
-
20 Anni 11 Mesi fa #7771
da COM_EASYSOCIAL_GUEST_NAME
Aiuto su un progetto semplice in C++ è stato creato da COM_EASYSOCIAL_GUEST_NAME
Vi prego di aiutarmi sul main di questo progetto che non gira. Il problema è sul main e devo mantenere il get(c) invece di usare il più comodo <<
Grazie in inticipo x l'aiuto. Di seguito c'è il programma(io uso devc++)
In ingresso c'è un qualunque file di testo
#include <iostream.h>
#include <fstream.h>
using namespace std;
fstream file_da_leggere; // stream per leggere il file
char nome_del_file[32]; // stringa per ospitare il nome del file
// da leggere
struct elemento // questa e' la struttura dell'elemento della
{ char parola[100]; // lista
int occorrenza;
elemento* succ;
};
typedef elemento* lista; // tipo di dato da far restituire alle funzioni
// Questa procedura inserisce l'elemento preso al secondo argomento nella
// lista presa “per riferimento” al primo. L'inserimento avviene in
// maniera ordinata rispetto al campo “occorrenza” degli elementi
void inserisci_ordinato(lista& i, elemento e)
{
lista p = 0, q, r;
for (q = i; q != 0 && q->occorrenza > e.occorrenza; q = q->succ)
p = q;
r = new elemento;
*r = e;
r->succ = q;
// controlla se si deve inserire in testa
if (q == i) i = r;
else p->succ = r;
}
// Questa funzione restituisce il valore “true” se e solo se le stringhe
// contenute nei due vettori presi in input sono identiche
bool div(char vet1[], char vet2[])
{
for(int i=0; (vet1 != '\0') || (vet2 != '\0');i++)
if (vet1!=vet2) return true;
return false;
}
// Questa funzione estrae un elemento dalla lista presa per riferimento al
// primo argomento. L'elemento estratto e' quello la cui stringa contenuta
// nel suo campo “parola” è identica alla stringa contenuta nel campo
// “parola” dell'elemento preso pure per riferimento al secondo argomento
bool estrai_elem_dato(lista& i, elemento& e)
{
lista p = 0, q;
for (q = i; q != 0 && div(q->parola,e.parola); q = q->succ) p = q;
if (q == 0) return false;
if (q == i) i = q->succ;
else p->succ = q->succ;
e.occorrenza = q->occorrenza;
delete q;
return true;
}
// Questa procedura stampa la lista sullo standard output. La stampa
// avviene un elemento per riga, prima il numero di occorrenze e poi
// la parola
void stampaLista(lista p0)
{
lista p = p0;
while (p != 0)
{cout << p->occorrenza << ' ' << p->parola << '\n';
p = p->succ;
}
}
// questo e' il programma principale che deve:
// 1. chiedere quale sia il file di testo da elaborare
// 2. aprire il flusso in lettura
// 3. costruire ed aggiornare la lista delle parole con le relative
// occorrenze; la parola è un testo compreso fra due spazi
// 4. chiudere il flusso
// 5. stampare la lista sullo standard output
int main()
{
char c;
lista p0 = 0;
elemento appoggio;
int i=0, j=0;
cout << "Quale file vuoi analizzare?\n";
cin >> nome_del_file;
file_da_leggere.open(nome_del_file, ios::in);
while (file_da_leggere.get(c))
{
if (c!=' ')
{appoggio.parola=c;
i++;
j=0;
}
else if (j=0)
{appoggio.parola='\0';
if (estrai_elem_dato(p0,appoggio))
{
appoggio.occorrenza++;
inserisci_ordinato (p0,appoggio);
i=0;
}
else
{
appoggio.occorrenza=1;
inserisci_ordinato(p0,appoggio);
i=0;
}
appoggio.occorrenza=0;
appoggio.parola='\0';
j=1;
}
}
file_da_leggere.close();
stampaLista(p0);
while(1);
return 0;
}
Grazie in inticipo x l'aiuto. Di seguito c'è il programma(io uso devc++)
In ingresso c'è un qualunque file di testo
#include <iostream.h>
#include <fstream.h>
using namespace std;
fstream file_da_leggere; // stream per leggere il file
char nome_del_file[32]; // stringa per ospitare il nome del file
// da leggere
struct elemento // questa e' la struttura dell'elemento della
{ char parola[100]; // lista
int occorrenza;
elemento* succ;
};
typedef elemento* lista; // tipo di dato da far restituire alle funzioni
// Questa procedura inserisce l'elemento preso al secondo argomento nella
// lista presa “per riferimento” al primo. L'inserimento avviene in
// maniera ordinata rispetto al campo “occorrenza” degli elementi
void inserisci_ordinato(lista& i, elemento e)
{
lista p = 0, q, r;
for (q = i; q != 0 && q->occorrenza > e.occorrenza; q = q->succ)
p = q;
r = new elemento;
*r = e;
r->succ = q;
// controlla se si deve inserire in testa
if (q == i) i = r;
else p->succ = r;
}
// Questa funzione restituisce il valore “true” se e solo se le stringhe
// contenute nei due vettori presi in input sono identiche
bool div(char vet1[], char vet2[])
{
for(int i=0; (vet1 != '\0') || (vet2 != '\0');i++)
if (vet1!=vet2) return true;
return false;
}
// Questa funzione estrae un elemento dalla lista presa per riferimento al
// primo argomento. L'elemento estratto e' quello la cui stringa contenuta
// nel suo campo “parola” è identica alla stringa contenuta nel campo
// “parola” dell'elemento preso pure per riferimento al secondo argomento
bool estrai_elem_dato(lista& i, elemento& e)
{
lista p = 0, q;
for (q = i; q != 0 && div(q->parola,e.parola); q = q->succ) p = q;
if (q == 0) return false;
if (q == i) i = q->succ;
else p->succ = q->succ;
e.occorrenza = q->occorrenza;
delete q;
return true;
}
// Questa procedura stampa la lista sullo standard output. La stampa
// avviene un elemento per riga, prima il numero di occorrenze e poi
// la parola
void stampaLista(lista p0)
{
lista p = p0;
while (p != 0)
{cout << p->occorrenza << ' ' << p->parola << '\n';
p = p->succ;
}
}
// questo e' il programma principale che deve:
// 1. chiedere quale sia il file di testo da elaborare
// 2. aprire il flusso in lettura
// 3. costruire ed aggiornare la lista delle parole con le relative
// occorrenze; la parola è un testo compreso fra due spazi
// 4. chiudere il flusso
// 5. stampare la lista sullo standard output
int main()
{
char c;
lista p0 = 0;
elemento appoggio;
int i=0, j=0;
cout << "Quale file vuoi analizzare?\n";
cin >> nome_del_file;
file_da_leggere.open(nome_del_file, ios::in);
while (file_da_leggere.get(c))
{
if (c!=' ')
{appoggio.parola=c;
i++;
j=0;
}
else if (j=0)
{appoggio.parola='\0';
if (estrai_elem_dato(p0,appoggio))
{
appoggio.occorrenza++;
inserisci_ordinato (p0,appoggio);
i=0;
}
else
{
appoggio.occorrenza=1;
inserisci_ordinato(p0,appoggio);
i=0;
}
appoggio.occorrenza=0;
appoggio.parola='\0';
j=1;
}
}
file_da_leggere.close();
stampaLista(p0);
while(1);
return 0;
}
Si prega Accedi o Crea un account a partecipare alla conversazione.
- COM_EASYSOCIAL_GUEST_NAME
-
- Visitatori
-
20 Anni 11 Mesi fa #7837
da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic Aiuto su un progetto semplice in C++
Prova a fare #include<iostream> (senza ".h") e vedi se gira...fammi sapere!
Si prega Accedi o Crea un account a partecipare alla conversazione.
- COM_EASYSOCIAL_GUEST_NAME
-
Autore della discussione
- Visitatori
-
20 Anni 11 Mesi fa #7840
da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic Aiuto su un progetto semplice in C++
No, non funziona lo stesso. Se riesci a darmi una soluzione te ne sarò infinitamente grato,.
Si prega Accedi o Crea un account a partecipare alla conversazione.