Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Pętla for - problem z dokończeniem zadania

Ostatnio zmodyfikowano 2014-11-17 15:50
Autor Wiadomość
mhabi
Temat założony przez niniejszego użytkownika
Pętla for - problem z dokończeniem zadania
» 2014-11-09 22:34:57
Witam. Mam problem z dwoma zadaniami, w których mam wykorzystać pętlę for.

Zadanie 1.
Napisz program wczytujący z klawiatury dwie dodatnie liczby całkowite n i m, i
wypisujący w kolejnych wierszach wszystkie dodatnie wielokrotności n mniejsze bądź
równe m

Zadanie 2.
Napisz program, który wczytuje z klawiatury nieujemną liczbę całkowitą n i wypisuje
wartość 0! + 1! + . . . + n! w formacie:
0! = 1 = 1
1! = 1 * 1 = 1
2! = 1 * 1 * 2 = 2
3! = 1 * 1 * 2 * 3 = 6

n! = 1 * 1 * 2 * … * n = …

W zadaniu pierwszym z samym policzeniem wielokrotności problemu nie mam, problem jest z drugą częścią zadania. Trochę myślałem nad tym aby wczytać jeszcze trzecią liczbę i wypisanie wielokrotnosci podzielnych przez te liczbę. Ale prosiłbym o jakieś nakierowanie.
Oto kod:
C/C++
#include<iostream>
using namespace std;
int main()
{
   
    int i, ilosc;
    int liczba;
    long long int silnia = 1;
   
    cout << "Podaj liczbe wieksza od 0: " << endl;
    cin >> liczba;
    ilosc = liczba;
    for( i = 1; i <= liczba; i++ )
         silnia = silnia * i;
   
    cout << liczba << "! = " << silnia << endl;
    system( "pause" );
}

Z kolei w zadaniu drugim brakuje mi pomysłu jak zrobić, aby poza samą wczytaną liczbą oraz ostatecznym wynikiem wypisywało mi liczby silni
C/C++
#include <iostream>
using namespace std;

int main() {
   
    int a, b, c, d;
    cout << "Podaj pierwsza liczbe: ";
    cin >> a;
    cout << "Podaj druga liczbe: ";
    cin >> b;
    d = a * b;
    while( b != 0 ) {
        c = a % b;
        a = b;
        b = c;
    }
    cout << "Najmniejsza wspolna wielokrotnosc: " << d / a << endl;
    system( "pause" );
}
P-120258
Tomek_z_W11
» 2014-11-11 22:02:01
Wielokrotnosc liczby n, to liczba a*n, gdzie a należy do liczb naturalnych, Ty masz wypisać wszystkie dodatnie wielokrotności, więc będzie to wyglądać tak:

int i; //do pętli
int n, m; //liczby do pobrania

for(i=1; i<m; i++)
{
    if(i*n <= m) //wypisujemy póki wielokrotność (i*n) jest mniejsza bądz równa liczbie m
        cout << i*n << endl;//wypisywanie wielokrotnosci liczby n w kolejnych wierszach
   
    else
        break; //jezeli wielokrotnosc bedzie wieksza od m, to break'iem przerywamy pętle.
}


Jeżeli chodzi o silnie, to jestes na swietnej drodze, trzeba tylko delikatnie zmodyfikowac, tzn rozszerzyc petle, w ten sposób:

#include <iostream>

using namespace std;

int main()
{
    int i, silnia;
    cin >> silnia;

    int rozmiar_pomocniczy=silnia; //rozmiar pomocniczy, zeby podczas wymnazania w petli nie "zapomniec" faktycznego rozmiaru silni

    for(i=1; i<rozmiar_pomocniczy; i++)
    {
        cout << i << " * "; //wyswietlamy obroty petli: 1, 2, 3, 4,...,n
        silnia*=i; //to samo co silnia = silnia * i;
    }

    cout << i << " = " << silnia << endl; //jeszcze jedno wyswietlenie obrotu, oraz znaku równa sie no i wreszcie silni

    return 0;
}
P-120393
mhabi
Temat założony przez niniejszego użytkownika
» 2014-11-17 15:09:32
#include<iostream>
using namespace std;

int main()
{
int n,i;
cout<<"Podaj n"<<endl;
cin>>n;

int rozmiar_pomocniczy=n;
for(i=0; i<rozmiar_pomocniczy; i++)
{
cout<<i*i<<"+";
n+=i*i;
}
cout<<i<<"="<<1+n<<endl;

system("pause");
return 0;
}

Program ten ma za zadanie wypisać sumę potęg drugiego stopnia n liczb.
Przykładowo wprowadzając n=5 wynik prezentuje się następująco:
0+1+4+9+16+5=36
Co zrobić, aby zamiast 0 wyświetlała się 1 i liczyła się potęga liczby 5?
P-120869
docentpp
» 2014-11-17 15:17:05
zamiast :
C/C++
for( i = 0; i < rozmiar_pomocniczy; i++ )


lepiej tak

C/C++
for( i = 1; i <( rozmiar_pomocniczy + 1 ); i++ )

P-120870
Tomek_z_W11
» 2014-11-17 15:50:34
W pętli dodajesz do n " n+=i*i; ", a zmienna n przechowuje jakąś liczbę, jeżeli ktoś wklepie 20, to wynik będzie o te 20 za duży.

Czyli zamiast rozmiaru_pomocniczego daj n (tam w warunku pętli), ale dodaj zmienną do przechowywania sumy i zainicjuj ją obowiązkowo liczbą 0, np w ten sposób:
int suma = 0;
P-120872
« 1 »
  Strona 1 z 1