• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zaczynam przygode z programowaniem i mam problem z tym zadaniem

Object Storage Arubacloud
0 głosów
760 wizyt
pytanie zadane 22 kwietnia 2017 w C i C++ przez Bish0p Obywatel (1,940 p.)
edycja 23 kwietnia 2017 przez Patrycjerz

1.4.3 Napisz program wczytujący ze standardowego wejścia trzy dodatnie
liczby całkowite n, m i k, i wypisujący w kolejnych wierszach wszystkie
wielokrotności n większe od m i mniejsze od k

Taka jest tresc zadanka

#include <iostream>
#include <cstdlib>
#include <conio.h>
using namespace std;
int m,n,k;
int main ()

{
     cout << "Podaj liczbe ktora bedzie wypisywana" << endl;
     cin >>n;
    cout << "Podaj liczbe ktora bedzie gorna granica" << endl;
     cin >>k;
    cout << "Podaj liczbe ktora bedzie dolna granica" << endl;
     cin >>m;

     for(int i=0;i<=k;i++)
     {
         int mnoznik=i+2;
        if((mnoznik<=k)&&(mnoznik>=m))
            cout <<n*mnoznik<<endl;
        else
           getch() ;
     }

  return(0);
}

A oto mój kod i teraz mam pytanie czy dobrrą drogą ide i gdzie jest błąd

z góry dziekuje ;)

komentarz 22 kwietnia 2017 przez niezalogowany

Kod wstawiamy w blok code (ostatni, w menu edytora). 

Nazwa tematu powinna sugerować o co chodzi.

 

C++ dawno temu się uczyłem, ale wydaje mi się, że if tak jak w innych językach ma strukturę:

if (warunek) {
 coś tam wykonaj;
}else{
coś tam wykonaj;
}

 

komentarz 22 kwietnia 2017 przez manjaro Nałogowiec (37,390 p.)
Tak z ciekawości co robi w tym kodzie #include <conio.h>
komentarz 22 kwietnia 2017 przez niezalogowany
Wpisz w google i będziesz miał pełno o tym. :)
1
komentarz 23 kwietnia 2017 przez NowyUrzydgownig Mądrala (5,090 p.)
Jak jest jedna instrukcja to klamry pomijać można, zasada nie tylko w C++. Conio.h nie jest częścią C++.
komentarz 23 kwietnia 2017 przez manjaro Nałogowiec (37,390 p.)
edycja 23 kwietnia 2017 przez manjaro
Mi chodzi o to co w tym konkretnym kodzie robi conio.h

dobra już doczytałem że w Windowsach zamyka się konsola bez getch

Tylko że zamiast tego getch można użyć getchar i nie trzeba includować głupiego conio.
komentarz 23 kwietnia 2017 przez NowyUrzydgownig Mądrala (5,090 p.)
Powoduje błąd, jeżeli chodzi ci o coś innego to sprecyzuj proszę.
komentarz 23 kwietnia 2017 przez rattle Użytkownik (510 p.)
Chyba chodzi mu o to, że się zastanawia po co autor użył tego conio.h i czemu ma służyć w kodzie? Jak dla mnie to jest zbędna w ogóle ta linijka. Skasowałem całego elsa'a i jego zawartość i działa tak jak trzeba.
komentarz 23 kwietnia 2017 przez NowyUrzydgownig Mądrala (5,090 p.)
Jest to po to, aby móc korzystać z funkcji getch(), ponieważ znajduje się ona właśnie w bibliotece conio.h
komentarz 23 kwietnia 2017 przez rattle Użytkownik (510 p.)
No dobra. Ale mi chodziło o to po co jest to getch? Jakie zastosowanie ma w kodzie i jaka jest przewaga między kodem z tą linijka a między kodem bez niej.

Bo z moich obserwacji wynika, że z tą linjka program nie działa poprawnie, a bez niej już tak..
2
komentarz 23 kwietnia 2017 przez NowyUrzydgownig Mądrala (5,090 p.)
Bo w zależności od IDE albo zobaczymy wynik, albo konsola się otworzy i zamknie w ułamku sekundy. Zainstaluj sobie visual studio i tam wypróbuj ten program w trybie debugowania(domyślnie f5). Bez tej linijki program ci się skompiluje ale nie będziesz w stanie zobaczyć okienka konsoli, zaś dzięki takim trickom jak getch(), która oczekuje na pobranie znaku możemy sobie spokojnie popatrzeć na wynik działania naszego programu.

1 odpowiedź

+1 głos
odpowiedź 23 kwietnia 2017 przez rattle Użytkownik (510 p.)
edycja 23 kwietnia 2017 przez rattle

Nie do końca dobrą drogą idziesz.

"wypisujący w kolejnych wierszach wszystkiewielokrotności n większe od m i mniejsze od k"

Twój program wypisuje wielokrotności n co prawda większe od n ale już nie mniejsze od k tylko po prostu tyle razy ile K wynosi.

Po pierwsze zastanowiłbym się na warunakami IF'a:

if((mnoznik<=k)&&(mnoznik>=m))

Sprawdzasz czy mnożnik jest mniejszy od k...

A wypisujesz mnoznik*n.

cout <<n*mnoznik<<endl;

Jeśli K=22, n=10, m=0 to powinno się wykonać 2 razy, nie? A u Ciebie

int mnoznik=i+2;

będzie się inkrementował 20 razy za każdym razem będzie mniejszy od K, więc się wypisze 20 razy. Dlatego pomyśl nad tym warunkiem - co chcesz sprawdzać - jaka była treść zadania.

Jeszcze propo tego:

int mnoznik=i+2;

Czemu chcesz od 2 zaczynać? n*2 = 2n, a czemu ma nie być pierwszej wielokrotności?

Po co ta linijka w ogóle się znajduje w kodzie? w jakim celu?

getch() ;

I ten else?

EDIT!: Dobra, to że mi bez tego działa poprawnie to nie znaczy, że komuś nie potrzebna. Z tym też działa, także odwołuje to co napisałem.

Podobne pytania

0 głosów
1 odpowiedź 1,436 wizyt
–6 głosów
2 odpowiedzi 183 wizyt
pytanie zadane 17 sierpnia 2016 w HTML i CSS przez bartekv13 Nowicjusz (120 p.)
–1 głos
0 odpowiedzi 541 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...