Problem z dzieleniem ( if / for )

0

Witam mam mały problem z zadaniem którego treść podam poniżej.

**** A dokładniej chodzi o to że analizując kod który napisałem wszystko wydaje mi się jasne i logiczne lecz odpalając program nie działa mi wyświetlanie liczb, chciałbym abyście mi pomogli zmienić kod tak aby zaczął on działać.****

Program wyświetla kolejne liczby naturalne z przedziału wprowadzonego przez użytkownika, które są podzielne przez liczbę, którą również wprowadza użytkownik. Na koniec wyświetlania liczb pojawia się informacja, ile liczb zostało wyświetlonych.
Przykład:
Podaj a = 3
Podaj b = 25
Przez co maja być podzielne?, d = 4
liczba 4
liczba 8
liczba 12
liczba 16
liczba 20
liczba 24
Wyświetlono 6 liczb podzielnych przez 4>

Oto kod który napisałem:

#include <iostream>

using namespace std;
int liczba1,liczba2,liczba3,dzielnik,reszta,wyswietlono;

int main()
{
    cout<<"Podaj pierwsza liczbe: ";
    cin>>liczba1;
    cout<<"Podaj druga liczbe: ";
    cin>>liczba2;
    cout<<"Podaj przez co ma byc podzielone: ";
    cin>>dzielnik;

    if(liczba2<liczba1)
    {
        liczba3=liczba1;
        liczba1=liczba2;
        liczba2=liczba3;
    }

    for(int i=liczba1; i<=liczba2; i++)
    {
        reszta=i%dzielnik;
        wyswietlono=wyswietlono+1;


        if(reszta=0)
        {
            cout<<"liczba "<< i <<endl;
        }
    }

    cout<<"Wyswietlono "<< wyswietlono <<" liczb podzielnych przez "<< dzielnik;

    return 0;
}
3
if(reszta=0)

winno byc chyba porównanie ==, a dales tam przypisani =

do złych rzeczy się odniose:

  1. zmienne globalne, a fuj
  2. jak nie będą zmienne globalne, to niektóre należałoby zainicjować, bo moga nie miec początkowej wartości 0.
  3. można tak, a można znależć pierwszą liczbę podzielną a następnie do niej dodawać wartość dzielnika. efekt będzie ten sam, a mniej operacji, więc w niektórych przypadkach będzie szybciej.
0

A no tak powinno być == Wielkie dzięki teraz już działa :)

0

Zamiast dodatkowej zmiennej liczba3 możesz użyć

if ( liczba1 > liczba2 ) {
  std::swap( liczba1, liczba2 );
}

Nie potrzebujesz również zmiennej reszta, a linijka inkrementująca liczbę wyświetlonych przenieś do bloku warunku (plus to o czym wspomniał @kaczus)

while( liczba1 <= liczba2 )
{
  if ( !(liczba1 % dzielnik) )
  {
    std::cout << liczba1 << "\n";
    ++wyswietlono;
    liczba1 += dzielnik;
  }
  else
  {
    ++liczba1;
  }
}
0

****Już sobie poradziłem z tym zadaniem ale dzięki :) ****

#include <iostream>

using namespace std;
int liczba1,liczba2,liczba3,dzielnik,reszta,wyswietlono;

int main()
{
    cout<<"Podaj pierwsza liczbe: ";
    cin>>liczba1;
    cout<<"Podaj druga liczbe: ";
    cin>>liczba2;
    cout<<"Podaj przez co ma byc podzielone: ";
    cin>>dzielnik;

    if(liczba2<liczba1)
    {
        liczba3=liczba1;
        liczba1=liczba2;
        liczba2=liczba3;wyswietlono++
    }

    for(int i=liczba1; i<=liczba2; i++)
    {
        reszta=i%dzielnik;

        if(reszta==0)
        {
            cout<<"liczba "<< i <<endl;
            wyswietlono++;
        }
    }

    cout<<"Wyswietlono "<< wyswietlono <<" liczb podzielnych przez "<< dzielnik;

    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1