|
|||||||
|
|
|
![]() |
|
|
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: 7029
|
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: 16:49.



















