|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Dec 2004
Messaggi: 88
|
[c++]1° traccia esercizi
ciao. devo portare 3 esercizi in c++ sviluppati in dev c++. la prima traccia è la seguente:
Codice:
Sviluppare un programma in C++ che legge e mnemorizza una stringa di caratteri (massimo 60) contente una serie di parole separate da spazio e stampa a video solo le parole più lunghe di 7 caratteri. Il programma deve essere strutturato cme segue: 1)Il main legge e memorizza la stringa,utilizza una funzione estraiParola e stampa le parole più lunghe di 7 caratteri. 2)La funzione estraiParola data la stringa e l'indice da cui iniziare la scansione della stringa restituisce la parola identificata a partire dalla posizione i e la sua lunghezza ki me la da? grazie a tutti ![]()
__________________
"Voi che li avete girati nei giradischi e gridati voi che li avete aspettati ascoltati bruciati e poi scordati..chi erano mai questi Beatles MA CHI ERANO MAI QUESTI BEATLES" |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Oct 2005
Messaggi: 65
|
... se ho capito il problema...
con un ciclo while riesci a fare tutto... while carattere in elaborazione <> blank check su un contatore e via che andiamo!
__________________
SAP |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Dec 2004
Messaggi: 88
|
diciamo il mio problema principale è la funzione estraiParola
__________________
"Voi che li avete girati nei giradischi e gridati voi che li avete aspettati ascoltati bruciati e poi scordati..chi erano mai questi Beatles MA CHI ERANO MAI QUESTI BEATLES" |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Dec 2004
Messaggi: 88
|
con char stringa[60] e cin >> stringa memorizzo la stringa nell'array.
con il ciclo while ripeto la funzione più volte passando di indice in indice. ma la funzione? come fa a controllare una parola? lo fa quando trova una spazio vuoto in una cella?
__________________
"Voi che li avete girati nei giradischi e gridati voi che li avete aspettati ascoltati bruciati e poi scordati..chi erano mai questi Beatles MA CHI ERANO MAI QUESTI BEATLES" |
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Dec 2004
Messaggi: 88
|
ho cercato di fare un mezzo algoritmo
ke ne pensate? Codice:
char estraiParola(char stringa, char & i) { while(int i=0) { int contatore_spazio = 0; if(stringa[i]!=" ") { i++; else { if(((i - 1) - (contatore_spazio + 1) >= 7) { cout << stringa[i - 7] stringa[i - 6] stringa[i - 5] stringa[i - 4] stringa[i - 3] stringa[i - 2] stringa[i - 1] << endl; } contatore_spazio = i; i++ } }
__________________
"Voi che li avete girati nei giradischi e gridati voi che li avete aspettati ascoltati bruciati e poi scordati..chi erano mai questi Beatles MA CHI ERANO MAI QUESTI BEATLES" |
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Oct 2005
Messaggi: 65
|
se no ancora + semplice
for di 60 if stringa(i) <> " " contatore stringa ++ else if contatore stringa <= 7 write else continua loop
__________________
SAP |
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Dec 2004
Messaggi: 88
|
eccomi qua.
sono riuscito a risolvere tutti i problemi di compilazione..ma il programma non funziona regolarmente..scrive simboli strani il codice intero è questo Codice:
#include <iostream> #include <stdlib.h> using namespace std; char estraiParola(char stringa); char estraiParola(char stringa) { while(int i=0) { char stringa[60]; int contatore_spazio = 0; if(stringa[i]!=' ') { i++; } else { if(((i - 1) - (contatore_spazio + 1)) >= 7) { cout << stringa[i - 7] << stringa[i - 6] << stringa[i - 5] << stringa[i - 4] << stringa[i - 3] << stringa[i - 2] << stringa[i - 1] << endl; } contatore_spazio = i; i++; } } } int main(int argc, char *argv[]) { int esci = 1; int i = 0; char stringa[60]; cout << "Inserisci una stringa di caratteri (massimo 60)" << endl; cin >> stringa[60]; estraiParola(stringa[60]); cout << stringa; system("PAUSE"); return 0; }
__________________
"Voi che li avete girati nei giradischi e gridati voi che li avete aspettati ascoltati bruciati e poi scordati..chi erano mai questi Beatles MA CHI ERANO MAI QUESTI BEATLES" |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Devi un po' lavoricchiare sulla teoria
![]() Ti do il prototipo della funzione: void estraiParola(char stringa[]); |
![]() |
![]() |
![]() |
#9 |
Member
Iscritto dal: Dec 2004
Messaggi: 88
|
ah si...vero.
![]() ora però mi da errore nella dichiarazione della vaiabile stringa all'interno della funzione!
__________________
"Voi che li avete girati nei giradischi e gridati voi che li avete aspettati ascoltati bruciati e poi scordati..chi erano mai questi Beatles MA CHI ERANO MAI QUESTI BEATLES" |
![]() |
![]() |
![]() |
#10 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7027
|
perché ha lo stesso nome di un parametro, e quindi il tuo codice è ambiguo (vuoi accedere alla variabile locale o al parametro?)
|
![]() |
![]() |
![]() |
#11 |
Member
Iscritto dal: Dec 2004
Messaggi: 88
|
risolto quell'errore me ne da un altro qui
estraiParola(stringa[60]); invalid conversion from char to char
__________________
"Voi che li avete girati nei giradischi e gridati voi che li avete aspettati ascoltati bruciati e poi scordati..chi erano mai questi Beatles MA CHI ERANO MAI QUESTI BEATLES" |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Se passi stringa[60] passi una carattere...per giunta il 61° e quindi vai anche fuori dai limiti del vettore...
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Nov 2004
Città: Napoli
Messaggi: 999
|
Ciao spero di averti ottimizzato un pò la function....
Codice:
void estraiParola(char stringa[]) { while(int i<60) { int contatore_spazio = 0; if(stringa[i]!=' ') { i++; contatore_spazio++; } else { if(contatore_spazio>=7) { for(int j=contatore_spazio;j<=0,j--) cout<<stringa[i-j]; i++; } } } se decidi di usarla fai un pò attenzione con il for della stampa non sò se becca tutti i caratteri, ad occhio e croce dovrebbe andare bene. Ah un altra cosa... penso che la function debba essere una void dato che non restituisce nulla in effetti stampa e basta. ![]()
__________________
Intel Pentium IV 3,0 GHz, Asus P5SD2-X , 1.0 Gb ddr2, Radeon X550 , Maxtor 160Gb sata, Hitachi 100 gb pata,Piooner Dvr-109 ,Microsoft Windows XP Professional Service Pack 2 |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:52.