Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    47

    definizione di strignhe in c++

    Salve,
    sto passando una mia applicazione da VB a C++, senza conoscerlo bene..
    La mia attuale difficolta' e' l'inizializzazioe e uso di una matrice stringa.
    Le istruzioni VB sono:
    dim casecontrollate(8, 8, 2)

    una matrice di stringhe a dimensione variabile, che inizializzo con:
    For i = 1 To 2
    For j = 1 To 8
    For k = 1 To 8
    casecontrollate(k, j, i) = ""
    Next k
    Next j
    Next i
    e che poi nel corso del programma utilizzo con istruzioni del tipo:
    casecontrollate(k, j, i) = casecontrollate(k, j, i) & "B1"

    Come si puo' fare la stessa cosa con c++?

    una definizione del tipo:
    char casecontrollate [12][2][8][8]
    mi restituisce una matrice di 2x8x8 stringhe di 12 caratteri?

    come la posso inizializzare?
    Grazie per la risposta!
    Nietta

  2. #2
    char casecontrollate [12][2][8][8]
    array abbastanza grandicello

    di solito gli array multidimensionali vengono inizializzati tramite dei for
    nel tuo caso per esempio per inizializzare tutti i caratteri si potrebbe fare
    codice:
    	char casecontrollate [12][2][8][8];
    	for (int i=0;i<12;i++) 
    	    for (int m=0;i<2;m++) 
    	        for (int j=0;j<8;j++) 
    	            for (int x=0;x<8;x++) 
    	                casecontrollate [i][m][j][x]=' ';
    PS. un consiglio:
    non confrontare il c++ col visual basic
    (anche se non lo conosco quelle poche righe di codice mi hanno fatto rabbrividire )
    e rimpiazza nel tuo cervello il concetto di stringa con quello di array di caratteri ;-)
    perchè dopo ti sarà tutto più semplice

  3. #3

    Re: definizione di strignhe in c++

    Originariamente inviato da Nietta
    ...
    Come si puo' fare la stessa cosa con c++?

    una definizione del tipo:
    char casecontrollate [12][2][8][8]
    mi restituisce una matrice di 2x8x8 stringhe di 12 caratteri?

    come la posso inizializzare?
    Grazie per la risposta!
    Nietta
    Se la lunghezza delle stringhe deve essere di 12 caratteri, devi
    dichiarare l'array così :

    char casecontrollate[2][8][8][12];

    L'ultimo valore rappresenta la lunghezza della stringa.

    Esempio di dichiarazione e assegnazione di alcune delle stringhe nell'array :
    codice:
    #include <iostream.h>
    
    int main( void )
    {
    	char casecontrollate[2][8][8][12];
    	
    	strcpy( casecontrollate[0][0][0], "Ciao ");
    	strcpy( casecontrollate[0][0][1], "Cosi' ");
    	strcpy( casecontrollate[0][0][2], "dichiari ");
    	strcpy( casecontrollate[0][1][0], "un ");
    	strcpy( casecontrollate[0][2][0], "array ");
    	strcpy( casecontrollate[0][3][0], "multi ");
    	strcpy( casecontrollate[0][4][0], "dimensione ");
    	strcpy( casecontrollate[1][0][0], "di ");
    	strcpy( casecontrollate[1][1][0], "stringhe");
    	strcpy( casecontrollate[1][2][0], "da 12 ");
    	strcpy( casecontrollate[1][3][0], "caratteri.");
    	
    	printf("Stringa = %s\n", casecontrollate[0][0][0]);
    	printf("Stringa = %s\n", casecontrollate[0][0][1]);
    	printf("Stringa = %s\n", casecontrollate[0][0][2]);
    	printf("Stringa = %s\n", casecontrollate[0][1][0]);
    	printf("Stringa = %s\n", casecontrollate[0][2][0]);
    	printf("Stringa = %s\n", casecontrollate[0][3][0]);
    	printf("Stringa = %s\n", casecontrollate[0][4][0]);
    	printf("Stringa = %s\n", casecontrollate[1][0][0]);
    	printf("Stringa = %s\n", casecontrollate[1][1][0]);
    	printf("Stringa = %s\n", casecontrollate[1][2][0]);
    	printf("Stringa = %s\n", casecontrollate[1][3][0]);
    	
    	printf("\nPremi il tasto INVIO.\n");
    	getchar();
    	return EXIT_SUCCESS;
    }
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  4. #4
    Utente di HTML.it L'avatar di newbie
    Registrato dal
    Dec 2005
    Messaggi
    299

    Re: definizione di strignhe in c++

    Originariamente inviato da Nietta
    Salve,
    sto passando una mia applicazione da VB a C++, senza conoscerlo bene..
    La mia attuale difficolta' e' l'inizializzazioe e uso di una matrice stringa.
    Le istruzioni VB sono:
    dim casecontrollate(8, 8, 2)

    una matrice di stringhe a dimensione variabile, che inizializzo con:
    For i = 1 To 2
    For j = 1 To 8
    For k = 1 To 8
    casecontrollate(k, j, i) = ""
    Next k
    Next j
    Next i
    e che poi nel corso del programma utilizzo con istruzioni del tipo:
    casecontrollate(k, j, i) = casecontrollate(k, j, i) & "B1"

    Come si puo' fare la stessa cosa con c++?

    una definizione del tipo:
    char casecontrollate [12][2][8][8]
    mi restituisce una matrice di 2x8x8 stringhe di 12 caratteri?

    come la posso inizializzare?
    Grazie per la risposta!
    Nietta
    Il tipo std::string dello Standard C++ forse fa al caso tuo, dato che ti semplifica le cose. Basterebbe scrivere

    codice:
    std::string casecontrollate[8][8][2]
    
       for(int i = 0; i < 2; i++)  //in C++ gli array partono da 0 e non da 1
          for(int j = 0; j < 8; j++)
             for(int k = 0; k < 8; k++)
               casecontrollate[k][j][i] = ""
    
    e poi
         casecontrollate[k][j][i] = casecontrollate[k][j][i] + "B1" //il + concatena le stringhe
    o almeno credo... è da un po' che non tratto lo Standard C++.
    Svegliati, Neo. Matrix ti possiede...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.