Program w C++

11 wrz 2018, 16:18
PkpPeter123

PkpPeter123

Celny Kursor 70 posty 264 pkt.

Program w C++

11 wrz 2018, 16:18
Cześć :P
Są tu jacyś zapaleni informatycy? :P
Mam tu kod programu w C++. Wykonałem dopiero jedną funkcję, lecz po wypisaniu "Obliczanie..." nic się nie dzieje. Musi wypisać się choćby cokolwiek, ponieważ cout'y mam w if i w else. Ogólnie nie wypisuje mi wyniku...
Kod:
#include <iostream>
#include <string>

using namespace std;

int main()
{
   int a;
   int b;
   int wynik;
   string choose;
   cout << "Podaj a:\n> ";
   cin >> a;
   cout << "Podaj b:\n> ";
   cin >> b;
   cout << "Chcesz wyliczyc NWD (nwd), czy NWW (nww)?\n> ";
   cin >> choose;

   if (choose == "nwd")
   {
      cout << "Obliczanie...\n";
   }

   else if(choose == "nww")
   {
      cout << "Obliczanie...\n";

      if (a == b)
      {
         wynik = a;
         cout << "NWW wynosi " << wynik << '\n';
      }

      else
      {
         for (int i = 2; i == 1; i++)
         {
            a * i;

            if (a == b)
            {
               wynik = a;
               cout << "NWW wynosi " << wynik << '\n';
               i = 1;
            }

            b * i;

            if (a == b)
            {
               wynik = a;
               cout << "NWW wynosi " << wynik << '\n';
               i = 1;
            }

            a / i;
            b / i;

         }
      }
   }

   else
   {
      cout << "Nie ma takiego wyboru!\n";
   }

   system("Pause");
   return 0;
}

Dzięki :D

Re: Program w C++

11 wrz 2018, 17:55
grzemach

grzemach

Wielki Procesor 2568 posty 1569 pkt.

Re: Program w C++

11 wrz 2018, 17:55
Zmień treść "Obliczanie..." na coś innego w oby przypadkach, np obliczanie nwd/nww - czy coś co pozwoli Ci rozróżnić który z tych elementów się wywołuje.
Druga sprawa dodaj zwyczajnie więcej outputów - przed for, czy innych kluczowych miejscach. Abyś miał dokładną wiedzę gdzie sa jakie parametry, gdzie program wchodzi, a gdzie nie.

Błąd masz w tym miejscu:
Kod:
for (int i = 2; i == 1; i++)
- to przecież zawsze da false....
Kod:
i == 1
tam chyba powinien być znaczek <= lub >= ;)

Re: Program w C++

11 wrz 2018, 20:30
sig

sig

Prawdziwa Ikona 663 posty 329 pkt.

Re: Program w C++

11 wrz 2018, 20:30
Oraz inna wartość skoro i zaczyna się od 2 i rośnie, to trzeba będzie przekroczyć zakres int-a żeby było mniejsze niż 1, a większe będzie od samego początku. Algorytm zresztą do zmiany w całości, ja bym sprawdził czy b jest większe od a, jak nie to zamienił miejscami. Potem już tylko wynik += b, dopóki reszta z dzielenia wyniku przez a nie będzie wynosiła 0. Pętlę dać while(1) albo for() (mniej znaków), wyjdziesz z niej break-iem jak ci reszta z dzielenia zaskoczy.


a jak ci miejsca szkoda to masz jednolinijkowca for(wynik = b; wynik % a != 0; wynik += b); potem już tylko wypisać

Re: Program w C++

11 wrz 2018, 21:13
PkpPeter123

PkpPeter123

Celny Kursor 70 posty 264 pkt.

Re: Program w C++

11 wrz 2018, 21:13
Jeżeli chodzi o pętlę, która rzekomo nigdy się nie skończy, to zrobiłem to tak, że po wypisaniu przez program zmiennej wynik, zmienia inta i na 1 :)
A co do cout'ów to poeksperymentuję z nimi i zobaczę od którego momentu program przestaje "na nie reagować".
Dzięki! :D

Re: Program w C++

11 wrz 2018, 21:25
grzemach

grzemach

Wielki Procesor 2568 posty 1569 pkt.

Re: Program w C++

11 wrz 2018, 21:25
jeśli czegoś takiego potrzebujesz, że zmieniasz wartość i do czasu gdy dana wartość jest różna (lub równa) innej wartości ma się wykonywać pętla jest inna pętla:

Kod:
do{
// lista rzeczy do wykonania
}while(warunek);

while(warunek){
// lista rzeczy do wykonania
}


pętla zakończy się gdy warunek umieszczony w nawiasach zaokrąglonych zwróci wartość
Kod:
false


Do poczytania:
1: http://cpp0x.pl/kursy/Kurs-C++/Poziom-2 ... o-while/18
2: http://cpp0x.pl/kursy/Kurs-C++/Poziom-3/Petla-while/354


PS. Skoro mówisz, że zmieniasz wartość "i" aby wyjść z tej pętli, to kiedy zmieniasz wartość "a" i "b", aby zmienić wartość "i"? Bo przypis: "a * i;" - nie zmienia nic. Wykona się poprawnie, ale nie zmieni wartości. Jak już powinien być "a *= i;"

Re: Program w C++

11 wrz 2018, 22:29
sig

sig

Prawdziwa Ikona 663 posty 329 pkt.

Re: Program w C++

11 wrz 2018, 22:29
Zamiast takiego kombinowania z licznikiem, korzystaj raczej z break; przerywa on pętlę w której aktualnie jesteś, Continue natomiast wraca na początek pętli i zaczyna kolejny obieg (też przydatne). Swoją drogą czemu nie zrobisz tego na funkcjach?

Re: Program w C++

03 gru 2018, 15:57
CaesarPL

CaesarPL

Początkujący User 2 posty 0 pkt.

Re: Program w C++

03 gru 2018, 15:57
W pętli masz warunek, który zawsze da false. Poza tym popracuj nad własnym stylem programowania - rozmieszczenie nawiasów oddzielających i umieszczanie niektórych linijek w osobnych funkcjach, np. NWD i NWW o takich nazwach. Nazywaj zmienne aby wyrażały do czego służą. Jest jeszcze sprawa z porównywaniem łańcuchów, lepiej korzystać z gotowych funkcji zamiast operatora '=='. Ten operator sprawdza się w innych typach, ale w łańcuchach to niezbyt dobry zwyczaj.
  • Brak nieprzeczytanych postów
  • Nieprzeczytane posty
  • Wątek zablokowany
  • Wątek przeniesiony
widget instagram lenovo
widget twitter lenovo
widget facebook lenovo
widget youtube lenovo