|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
29-10-2003, 11.37.38 | #1 |
Senior Member
Registrato: 02-04-2003
Loc.: Roma
Messaggi: 313
|
Array e Matrice di tipo stringa
stringa, dia un array di 9 elementi di tipo stringa ordinato descrescentemente, cioè dalla stringa con meno caratteri a quella con più caratteri, e poi un altro array sempre di 9 elementi questa volta di tipo intero che dica di quanti caratteri e composto ogni singolo elemento l'array precedente. Qualcuno mi sa aiutare |
29-10-2003, 22.07.28 | #2 |
Senior Member
Registrato: 25-04-2003
Messaggi: 372
|
ma con quale linguaggio?
___________________________________
~Cucciolo~ Per trattare te stesso usa la testa, per trattare gli altri usa il tuo cuore. |
30-10-2003, 15.12.21 | #3 |
Senior Member
Registrato: 02-04-2003
Loc.: Roma
Messaggi: 313
|
IL programma deve essere fatto in C++ , scusate la dimenticanza ehehhe
|
30-10-2003, 21.20.24 | #4 |
Senior Member
Registrato: 25-04-2003
Messaggi: 372
|
mi spiace ma nn posso aiutarti
___________________________________
~Cucciolo~ Per trattare te stesso usa la testa, per trattare gli altri usa il tuo cuore. |
31-10-2003, 16.28.52 | #5 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Non lasciarti fuorviare dal fatto che hai array bidimensionali, considerali monodimensionali.
Mi spiego meglio: Tu hai una situazione del tipo: MioArray[3][3] Farai inserire all'utente n° 9 (3x3) elementi, cioè ad esempio: MioArray[1,1]="a" MioArray[1,2]="b" MioArray[1,3]="c" MioArray[2,1]="d" MioArray[2,2]="e" MioArray[2,3]="f" MioArray[3,1]="g" MioArray[3,2]="h" MioArray[3,3]="i" Poi dovrai ordinarli in ordine decrescente ma ogni singolo elemento dovrà essere inserito in un array monodimensionale da n° 9 elementi. Questo significa che: MioArray1[1]=MioArray[1,1] MioArray1[2]=MioArray[1,2] MioArray1[3]=MioArray[1,3] MioArray1[4]=MioArray[2,1] MioArray1[5]=MioArray[2,2] MioArray1[6]=MioArray[2,3] MioArray1[7]=MioArray[3,1] MioArray1[8]=MioArray[3,2] MioArray1[9]=MioArray[3,3] A questo punto si tratta solo di eseguire un semplice algoritmo di ordinamento sequenziale in ordine decrescente (Bubblesort va benissimo per matrici di dimensioni così ridotte, altrimenti sarebbe sempre consigliato il Quicksort). Codice:
for(a=1; a<9 ; a++) for(b=8 ; b>=a; b--) { if(MioArray[b-1] < MioArray[b]) // Se MioArray[b-1] > MioArray[b] hai l'ordinamento crescente { t = MioArray[b-1]; MioArray[b-1] = MioArray[b]; MioArray[b] = t; } } Alla fine avrai i,h,g,f,e,d,c,b,a Saluti |
31-10-2003, 16.51.52 | #6 |
Senior Member
Registrato: 02-04-2003
Loc.: Roma
Messaggi: 313
|
In effetti ho provato a fare proprio come dici tu, anche se la cosa è un pò più complessa visto che parto da una matrice di stringhe, e voglio due array risultanti uno di interi e uno di stringhe, ho provato a buttare giù una bozza di codice, ma il compilatore non vuole saperne di compilare , metto qui la sorgente, sperando che qualcuno mi dica che errori ci sono:
#include <iostream> #include <cstring> char scambio_v[9][10](char v[9][10]) { int i; char temp[10]; for (i=0; i<=8; i++) { if (strlen(v[i])<strlen(v[i++])) { strlcpy(temp,v[i]); strlcpy(v[i],v[i++]); strlcpy(v[i++],temp); } } for (i=0; i<=8; i++) return v[i]; } int scambio_z[9](int z[9]) { int i,temp; for (i=0; i<=8; i++) { if (z[i]<z[i++]) { temp=z[i]; z[i]=z[i++]; z[i++]=z[i]; } } for (i=0; i<=8; i++) return z[i]; } using namespace std; int main() { char matrice[3][3][10]; char v[9][10]; int z[9]; int i,j,x; cout<<"Inizializzazione matrice" <<endl; for (i=0; i<=2; i++) for (j=0; j<=2; j++) cin>>matrice[i][j]; x=0; for (i=0; i<=2; i++) for (j=0; j<=2; j++) { strcpy(v[x],matrice[i][j]); z[x]=strlen(matrice[i][j]); x=x+1; } for (i=0; i<=8; i++) { strcpy(v[i],scambio_v(v)); z[i]=scambio_z(z); } cout<<"Vettore ordinato descrescentemente" <<endl; for (i=0; i<=8; i++) cout<<v[i] <<endl; cout<<"Vettore contenente la lunghezza di ogni stringa" <<endl; for (i=0; i<=8; i++) cout<<z[i] <<endl; return 0; } |
20-11-2003, 14.03.47 | #7 |
Junior Member
Registrato: 23-04-2001
Loc.: Dietro questa porta
Messaggi: 88
|
Il codice in teoria sembra corretto; puo' darsi che tu abbia usato alcune funzioni proprie del C non riconosciute con C++...
Ho provato a compilare il programma con Visual C++ e mi ha trovato i seguenti errori: -scambio_v[9][10] e scambio_z[9] non possono essere usati per nomi di funzioni (prova con scambio_v e scambio_z) -strlcpy non e' una funzione valida (strcpy e' quella corretta) Inoltre prova a ricontrollare la dichiarazione di main che a me risulta errata alla compilazione. ciao Ultima modifica di metallica83 : 20-11-2003 alle ore 21.04.29 |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
[C] Battaglia Navale (versione client server) in Linux | Nanri | Programmazione | 11 | 06-08-2005 14.50.27 |
velocizzare VB6 | NS-1 | Programmazione | 13 | 11-06-2004 09.55.22 |