• 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

VPS Starter Arubacloud
0 głosów
745 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,415 wizyt
–6 głosów
2 odpowiedzi 181 wizyt
pytanie zadane 17 sierpnia 2016 w HTML i CSS przez bartekv13 Nowicjusz (120 p.)
–1 głos
0 odpowiedzi 499 wizyt

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...