Wątek przeniesiony 2017-11-22 10:20 z C/C++ przez ŁF.

Funkcja wyswietlajace kolejne liczby nieparzyste podzielne przez 7, gdzie n jest parametrem

0

Mam wykonać zadanie gdzie za pomocą napisanej funkcji program będzie wyświetlał kolejne n liczb podzielnych przez 7 oraz n ma być parametrem.
Napisałam kod bez funkcji i śmiga, jednak problem zaczął się kiedy napisałam to za pomocą funkcji i wyświetla jedynie n-tą liczbę.
Prosiłabym o pomoc co robię nie tak.

int kolejne_liczby_nieparzyste (int N)
{
    int liczba;
    for (int i=1; i<=N; i++)
    {
        liczba=7+(i-1)*14;
    }
    return liczba;

}
int main()
{
    int ilosc;
    cout << "Podaj ile liczba nieparzystych wyswietlic: ";
    cin >> ilosc;
    cout << kolejne_liczby_nieparzyste(ilosc);

    return 0;
}
1
 void kolejne_liczby_nieparzyste (int N, std::function<void(int)> doSomething)
{
    for (int i=0; i<N; i++)
    {
        doSomething((2 * i + 1) * 7);
    }
}

int main()
{
    int ilosc;
    cout << "Podaj ile liczba nieparzystych wyswietlic: ";
    cin >> ilosc;
    kolejne_liczby_nieparzyste(ilosc, [](auto x)
    {
        cout << x << '\n';  
    });
    return 0;
}

Celowo użyłem "armaty", żeby pokazać w czym problem, a prowadzący od razu nabrał podejrzeń że ktoś ci "pomógł".

2

Możesz zmienić funkcję tak aby liczby były wyświetlane w pętli. Nie musi ona również niczego zwracać.

void kolejne_liczby_nieparzyste(int N)
{
	int liczba;
	for (int i = 1; i <= N; i++)
	{
		liczba = 7 + (i - 1) * 14;
		cout << liczba << endl;
	}
}
0

Ja bym to zrobił tak:

#include<iostream>
using namespace std;

void print_all_divisible_by_seven(unsigned n)
{
	unsigned count = 0;
	int number = 1;
	while (count < n)
	{
		if (number % 7 == 0)
		{
			cout << number << "\n";
			++count;
		}
		++number;
	}
}

int main()
{
	print_all_divisible_by_seven(7);
	return 0;
}

https://ideone.com/1EgVlH

EDIT: Nom, w tytule było, że nieparzyste ale post niech zostanie dla ciągłości konwersacji. :)

0

Napisałam w nagłówku ale zapomniałam dodać w treści że mają być nieparzyste,

Dzięki za pomoc

4

Przekombinowujecie imo.

int max = 7 + 14 * n;
for(int val = 7; val <= max; val += 14)
    cout << val << '\n';

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