Definicja funkcji w main <C++>

0

Witam

Chciałbym umieścić definicje funkcji w main taky aby miała dostęp do zmiennych z main , ale kompilator wyrzuca błąd, jakaś rada?

Pozdrawiam i czekam z niecierpliwością na odpowiedź

0

Do funkcji przekazuje się dane przez argumenty.

int suma(int x, int y){
  return x+y;
}

int main(){
  int x,y;
  cin>>x>>y;
  cout<< suma (x,y); //voila, funkcja ma dostęp do zmiennych z main
}
0

znam tą metodę ale czy można umieścić definicje metody w main?
Albo jeszcze bardziej zagnieżdzając definicja metody w metodzie?

0

Nie, bo i po co miałbyś to robić? o_O Głowe dam że coś zrobiłeś źle, skoro potrzebujesz takich dziwnych konstrukcji...

0

nic nie zrobiłem źle , po prostu chciałbym wiedzieć czy mogę tworzyć metody o lokalnym zakresie z dostępem do lokalnych zmiennych

0

Zdefiniujmy funkcję w funkcji w funkcji, a tą w jeszcze innej funkcji. A co będziemy się pieścić! ;P.
Zastanów się nad tym jak użyć parametrów funkcji tak żeby nie było ich kilkanaście. A jeżeli potrzebujesz dużo danych to użyj np. struktury. O zmiennych globalnych radzę nawet nie myśleć, bo to jest krótka droga do trudnych do znalezienia błędów

1

po prostu chciałbym wiedzieć czy mogę tworzyć metody o lokalnym zakresie z dostępem do lokalnych zmiennych

W zgodnym ze standardem C++ nie (z tego co pamiętam GCC ma do tego jakieś rozszerzenie). Pisałeś wcześniej w jakimś języku który to umożliwiał (np. Scala, D, Pascal, Python, Common Lisp, Haskell) - pytam z ciekawości?

0

ale ja pytam nie o różne metody, które mogę zastosować tylko pytam o możność tworzenia motod zasięgu lokalnym z dostępem do zmiennych lokalnych

Ale dziękuje bardzo za odpowiedzi

pozwole sobie spytać jeszcze : Stworzyłem zmienną globalna typu int x; stworzyłem też tablice intów także globalną a kompilator pluje się że nie ma deklaracji jedynie zmiennej x, why?

0

@Tezcatlipoca dziękuje, odpowiedź na twoje pytanie: nie pisałem

1
int pierwsza, druga;
std::cin >> pierwsza >> druga;

auto suma1 = [](int x, int y) -> int { return x + y; };
auto suma2 = [=]() -> int { return pierwsza + druga; };
auto suma3 = [pierwsza, druga]() -> int { return pierwsza + druga; };

std::cout << suma1(pierwsza, druga) << " " << suma2() << " " << suma3();

Więcej informacji: http://msdn.microsoft.com/en-us/library/dd293603.aspx

0
 #include <cstdlib>
#include <iostream>
#include <iomanip>

using namespace std;

    //----------------------------------------------------
    
                    //  a  b  c  d  e  f  g  h  i 
    int tab[9][9] = { {0 ,10,20,30,40,50,55,60,65}, //a
                      {10,0 ,10,20,30,40,45,50,55}, //b
                      {20,10,0 ,20,30,40,45,50,55}, //c
                      {30,20,20,0 ,40,50,55,60,65}, //d
                      {40,30,30,40,0 ,5 ,10,15,20}, //e
                      {50,40,40,50,5 ,0 ,5 ,10,15}, //f
                      {55,45,45,55,10,5 ,0 ,5 ,10}, //g
                      {60,50,50,60,15,10,5 ,0 ,10}, //h
                      {65,55,55,65,20,15,10,10,0 }  //i
                     };
    //Miasto startowe    
    int mStart = 0;
    //Tablica punktów sąsiedztwa
    int sTab[8];
    //Minimum
    int min  = 0 ;
  
    



int main(int argc, char *argv[])
{    
    void uSasiedztwo(int);

    //----------------------------------------------------
    
    //Losowanie miasta startowego///////////////////////////
    srand( (unsigned)time( NULL ) );
    mStart = ( rand() % 9 );
    uSasiedztwo(mStart);
    
    for(int i = 0 ; i < 8 ; i++ ){
            
            if( ( tab[mStart][ sTab[i]  ] < min ) || ( min == 0) ){
            
               min = tab[mStart][ sTab[i] ];
            
            } 
    }
      

    
    system("PAUSE");
    return EXIT_SUCCESS;
}

    //--------Metody--------------------------------------
    
    void uSasiedztwo(int miasto){
         
         for(int i = 0; i < 8 ; i++){
                 
                 for(int k = 0; k < 9 ; k++){
                         
                         if(k != miasto){
                      
                            sTab[i] = k;
                            
                         }
                      
                 }
                 
         }
         
    }

I czemu nie widzi min w main?

1

nie „nie widzi”, tylko ambiguous symbol, czyli „symbol niejednoznaczny”.
istnieje w bibliotece C++ już funkcja o takiej nazwie, a zapis using namespace std powoduje jej wciągnięcie do zasięgu — i nagle masz dwie nazwy min znaczące co innego.

0

mi dev wyrzucił że min jest nie zadeklarowane, dziękuje za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1