View Full Version : [c++]1° traccia esercizi
ciao. devo portare 3 esercizi in c++ sviluppati in dev c++. la prima traccia è la seguente:
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
questa è la traccia. io non ho bisogno di essere fatto tutto il programma, volevo solo una spinta iniziale da cui poi posso continuare e terminare da solo.
ki me la da?
grazie a tutti :)
... 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!
diciamo il mio problema principale è la funzione estraiParola
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?
ho cercato di fare un mezzo algoritmo
ke ne pensate?
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++
}
}
se no ancora + semplice
for di 60
if stringa(i) <> " "
contatore stringa ++
else
if contatore stringa <= 7
write
else
continua loop
eccomi qua.
sono riuscito a risolvere tutti i problemi di compilazione..ma il programma non funziona regolarmente..scrive simboli strani
il codice intero è questo
#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;
}
Devi un po' lavoricchiare sulla teoria ;)
Ti do il prototipo della funzione:
void estraiParola(char stringa[]);
ah si...vero. :doh:
ora però mi da errore nella dichiarazione della vaiabile stringa all'interno della funzione!
perché ha lo stesso nome di un parametro, e quindi il tuo codice è ambiguo (vuoi accedere alla variabile locale o al parametro?)
risolto quell'errore me ne da un altro qui
estraiParola(stringa[60]);
invalid conversion from char to char
Se passi stringa[60] passi una carattere...per giunta il 61° e quindi vai anche fuori dai limiti del vettore...
TuLKaS85
09-02-2006, 23:11
Ciao spero di averti ottimizzato un pò la function....
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++;
}
}
}
così dovresti stampare anche le parole maggiori di 7 caratteri...
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.
:)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.