|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jan 2006
Messaggi: 91
|
[C++] Piccolo aiuto
Ciau a tutti e auguri
![]() Il prof. di informatica per le vacanze pasquali ci ha dato quest'esercizio: Dato un vettore di N stringhe, costruire una funzione che dopo aver inserito N stringhe permetta di ottenere una stringa costituita da tutti i caratteri numerici e alfabetici minuscoli di tutte le stringhe. Ho scritto il programma usando Borland C++ v3.1 senza grossi problemi, eccolo: Codice:
#include <conio.h> #include <iostream.h> #include <stdio.h> #include <string.h> #define n_max_car 20 #define n_max 20 void ins (int N, char vet_stringhe[n_max][n_max_car]); void costr_strin (char vet_stringhe[n_max][n_max_car], int N, char stringa[n_max_car]); void visua (char stringa[n_max_car]); void main () { char vet_stringhe_1[n_max][n_max_car], stringa_1[n_max_car]; int N_1; ins (N_1,vet_stringhe_1); costr_strin(vet_stringhe_1,N_1,stringa_1); visua(stringa_1); } void ins (int N, char vet_stringhe[n_max][n_max_car]); { clrscr(); int I; do { cout<<"Inserisci il numero massimo di stringhe "; cin>>N; } while (!((N>=2)&&(N<=n_max))); for (I=0;I<N;I++) { cout<<"Inserisci la "<<I+1<<"^ stringa del vettore "; gets(vet_stringhe[i]); } } void costr_strin (char vet_stringhe[n_max][n_max_car], int N, char stringa[n_max_car]); { int I,J,K; K=0; for(I=0;I<N;I++) { for(J=0;J<strlen(vet_stringhe[i]);J++) { if ( ((vet_stringhe[i][J]>='1')&&(vet_stringhe[i][J]<='9')) || ((vet_stringhe[i][J]>='a')&&(vet_stringhe[i][J]<='z')) ) { stringa[K]=vet_stringhe[i][J]; K++; } } } stringa[K]='\0'; } void visua (char stringa[n_max_car]); { cout<<"La stringa formata dai caratteri numerici e dai caratteri minuscoli del vettore e' "<<stringa<<endl; while (!kbhit()); } ![]() Codice:
if ( ((vet_stringhe[i][J]>='1')&&(vet_stringhe[i][J]<='9')) || ((vet_stringhe[i][J]>='a')&&(vet_stringhe[i][J]<='z')) ) Aiutatemi a capire dov'è il problema ![]() Grazie e ancora auguri ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
strano.. come fa a non darti errore il punto e virgola nella definizione della funzione? e poi in certe funzioni hai dichiarato I ma usavi i.. insomma a me dava un sacco di errori, ho messo a posto tutto ma spara fuori due cout senza farti inserire niente.. sicuramente bisogna svuotare il buffer. ho provato a usare la fflush ma non cambia nulla..
|
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Jan 2006
Messaggi: 91
|
lol infatti ci sono alcuni errori perchè l'ho provato a scuola e poi l'ho ricopiato in dev-c++ senza neanche controllare eventuali errori di copia
![]() ![]() Comunque anche correggendolo si blocca sempre su quella stringa, e poi non ho la minima idea di come sia il buffer, e la stessa cosa vale per il fflush ![]() PS nel compilatore le i sono tutte maiuscole ![]() |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Quote:
no ce n'era una minuscola e quindi dava errore.. comunque ho risolto con un fflush(stdin) dopo che inserisci il numero di stringhe solo che non va ancora lol.. la stringa non prende mai i caratteri maiuscoli.. boooooooooo.. |
|
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Jan 2006
Messaggi: 91
|
infatti deve prendere solo quelli numerici a minuscoli
![]() |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
|
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Jan 2006
Messaggi: 91
|
si è arreso anche il prof lol, che compilatore hai usato?
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
Purtroppo, siccome il passaggio dei parametri e' per valore, non assegni nulla. Al termine dell'esecuzione di ins() hai ancora in N_1 il valore precedente. Il valore precedente e': INDETERMINATO. Non hai assegnato alcun valore.
__________________
In God we trust; all others bring data |
|
![]() |
![]() |
![]() |
#9 |
Member
Iscritto dal: Jan 2006
Messaggi: 91
|
Se ho capito bene quello che intendi N_1 è il prototipo, il valore va assegnato ad N, che rappresenta il numero di stringhe.
|
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Quote:
ho usato il devcpp.. comunque intende che hai usato un passagio di varibili per valore (cioè che crea una copia e usa quella) e che quindi poi nel main e nelle altre funzioni n_1 avrà il valore che aveva prima.. se invece vuoi proprio modificare il valore di n_1 devi passarglielo per riferimento cioè &n_1. |
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Codice PHP:
|
![]() |
![]() |
![]() |
#12 |
Member
Iscritto dal: Jan 2006
Messaggi: 91
|
Salve...scusatemi se mi faccio vivo solo ora
![]() ![]() Grazie ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:12.