Visualizzazione dei risultati da 1 a 2 su 2

Hybrid View

  1. #1

    [C++] Variabile usata fuori dal body

    Buon giorno ragazzi,sono uno studente di un instituto tecnico,e sto svolgendo un esercizio in C++,l'esercizio consiste:

    -ingrandire una matrice faccendo si che un quadrato della matrice di partenza corrisponda a un quadrato 2x2 della nuova matrice

    -rimpicciolire la matrice faccendo si che un quadrato 2x2 della matrice di partenza corrisponda a un quadrato della nuova matrice



    ecco il mio codice (ho sviluppato solo l'ingrandimento per ora):

    codice:
    #include <iostream>
    #define Mp 3
    #include <conio.h>
    #include <stdlib.h>
    #include <windows.h>
    
    using namespace std;
    
    void menu (int c);
    void movimento_cursore(int &c);
    void dimensionamento (int &righe,int &colonne);
    void ingrandisci (int righe,int colonne,bool matrice[][colonne],bool m[][c]);
    void caricamento(bool matrice[][colonne],int righe, int colonne);
    
    
    int main()
    {
        int righe,colonne;
    
        dimensionamento(righe,colonne);
    
        int r=righe*2,c=colonne*2;
        bool matrice[righe][colonne],m[r][c];
    
        caricamento(matrice,righe,colonne);
    
    int opzione=0;
    bool b=0;
    
    do{
    movimento_cursore(opzione);
    
    
    switch (opzione)
    {
        case 0: {
            ingrandisci(matrice,righe,colonne,m);
            break;
        }
    
        case 1:{
        break;
        }
    
        case 2:
            {
            b=1;
            break;
            }
    
    
    }
    }
    while (b==1);
    system("cls");
    cout<<"Hai terminato il programma: ARRIVEDERCI! :D";
    return 0;
    
    }
    
    
    void movimento_cursore(int &c){
        int key=0,opzione=0;
    
    while (key != 13){  //tasto enter
    menu (c);
    key = getch();
    
    switch (key) {
    
    case 72:    //sopra
        {
        if (c>0)
            c--;
        else
            c=Mp-1;
        }
    break;
    
    case 80: //sotto
        {
        if (c<Mp-1)
            c++;
        else
            c=0;
        }
    break;
    }
    }
    }
    
    
    void menu (int c){
    system ("cls");
    if(c==0)cout<<"--->";cout<<"Ingrandisci la matrice"<<endl;
    if(c==1)cout<<"--->";cout<<"Rimpicciolisci la matrice"<<endl;
    if(c==2)cout<<"--->";cout<<"Esci dal programma"<<endl;
    }
    
    void dimensionamento (int &righe,int &colonne){
    cout<<"Inserisci le dimensioni della matrice (ATTENZIONE: se si vuole rimpicciolire la matrice le dimensioni devono essere multipli di 2)"<<endl<<endl;
    cout<<"riga: ";
    cin>>righe;
    cout<<endl<<"colonne: ";
    cin>>colonne;
    cout<<endl<<"Inserimento avvenuto con successo";
    system ("pause");
    system ("cls");
    }
    
    void caricamento(bool matrice[][colonne],int righe,int colonne){
    for (int i=0;i<righe;i++){
        for (int j=0;j<colonne;j++){
            cin>>matrice[i][j];
        }
    }
    }
    
    void ingrandisci (bool matrice[][colonne],int righe,int colonne,bool m[][c]){
        bool comodo;
        int r_comodo,c_comodo;
    
        for (int i=0;i<righe;i++){
            for (int j=0;j<colonne;j++){
                    comodo=matrice[i][j];
                    r_comodo=i*2;
                    c_comodo=j*2;
                    m[r_comodo][c_comodo]=comodo;
                    m[r_comodo][c_comodo+1]=comodo;
                    m[r_comodo+1][c_comodo]=comodo;
                    m[r_comodo+1][c_comodo+1]=comodo;
            }
        }
    
    }

    ma il compilatore (CodeBlocks) mi da un errore che non riesco a capire:



    riga 12 error: use of parameter 'colonne' outside function body



    perchè? nella riga 12 dichiaro un prototipo di una funzione che uso dopo,i parametri (in questo caso righe e colonne) vengono passati dal main alla funzione,qual'è il suo problema? XD

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Nel prototipo di ingrandisci hai messo

    int colonne,bool matrice[][colonne]

    Non va bene, non puoi usare una dichiarazione del genere. Se la dimensione non è nota a compilazione devi usare l'allocazione dinamica.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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 © 2025 vBulletin Solutions, Inc. All rights reserved.