2 / 4
Mar 2020

Cześć,
Mam do napisania kod,który wyświetli liczby od 1 do 100. Dla wielokrotności liczby 3 ma wyświetlić „Iron” zamiast liczby, oraz dla wielokrotności liczby 7, ma wyświetlić „Man”. Dla liczb będących wielokrotnościamoi 3 oraz 7, ma wyświetlić ,IronMan". W funkcji ironman () i jej ciele wykonują się wszystkie operacje a do funkcji main () zwracany jest wynik. Mój problem tkwi w drobnym szczególe z którym nie wiem jak sobie poradzić a chodzi o dodatkowy wiersz wyswietlany w tablicy kompilatora, który wyświetla wartość 7208680. Wiem, że problem tkwi w zmiennej x zadeklarowanej w funkcji ironman(), ponieważ po przypisaniu jej wartości zero ostatni i dodatkowy wiersz zwraca właśnie wartość 0, Oczywiście mógłbym cały kod ze względu na jego długość oraz złożoność napisać w funkcji main () i byłoby po problemie ale chcę ogarnąć wywoływanie funkcji.
Proszę Was o pomoc we wskazaniu błedu.

#include

using namespace std;

int ironman ( )
{
int x=0;
for(int x=1; x<=100; x++)
{
if (x%21==0)
{
cout<<“IronMan”<<endl;
}
else if (x%3==0)
{
cout<<“Iron”<<endl;
}
else if (x%7==0)
{
cout<<“Man”<<endl;
}
else
{
cout<<x<<endl;
}
}
return x;
}

int main()
{
cout<<ironman ();
return 0;
}

  • created

    Mar '20
  • last reply

    Mar '20
  • 3

    replies

  • 861

    views

  • 4

    users

Czemu nie wstawiłeś poprawnie kodu?

Tworzysz dwie zmienne o tej samej nazwie ‘x’ (jedna w zakresie funkcji, druga w zakresie pętli). Zmienna w zakresie pętli żyje tak długo jak pętla jest wykonywana. Jeżeli w kodzie masz dwie zmienne o tej samej nazwie program odwoła się do tej z najbliższego scope (jeżeli są w tym samym będzie błąd). Czyli krótko mówiąc - masz taką sytuację w kodzie:

#include <iostream>

using namespace std;

int ironman()
{
    int y = 0;
    for (int x = 1; x <= 100; x++) 
    {
        if (x % 21 == 0) 
        {
            cout <<"IronMan"<< endl;
        }
        else if (x % 3 == 0) 
        {
            cout <<"Iron"<< endl;
        }
        else if (x % 7 == 0) 
        {
            cout <<"Man"<< endl;
        }
        else 
        {
            cout << x << endl;
        }
    }
    return y;
}

int main()
{
    cout << ironman();
    return 0;
}

A jeszcze co masz na myśli pisząc tablica kompilatora? czy to jest jakies okienko podgladu? czy moze konsola? czy moze podglad zmiennej przy debugowaniu?

Twoja funkcja wszystko robi, więc może, ale nie musi nic zwracać.
Wystarczy w mainie ignoroweać zwracaną wartość, ale na pewno nie drukować jej.

main () {
   ironman ();
}

Możesz też zmienić typ funkcji na void [ i usunąć z niej return];