|
|||||||
|
|
|
![]() |
|
|
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: 21:57.




















