Pętla for - problem z dokończeniem zadania
Ostatnio zmodyfikowano 2014-11-17 15:50
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: #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 #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" ); } |
|
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; } |
|
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? |
|
docentpp |
» 2014-11-17 15:17:05 zamiast : for( i = 0; i < rozmiar_pomocniczy; i++ )
lepiej tak for( i = 1; i <( rozmiar_pomocniczy + 1 ); i++ )
|
|
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; |
|
« 1 » |