• 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
909 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,555 wizyt
–6 głosów
2 odpowiedzi 204 wizyt
pytanie zadane 17 sierpnia 2016 w HTML i CSS przez bartekv13 Nowicjusz (120 p.)
–1 głos
0 odpowiedzi 695 wizyt

93,006 zapytań

141,974 odpowiedzi

321,255 komentarzy

62,348 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...