siemes Temat założony przez niniejszego użytkownika |
Dwa zadania - 1. źle oblicza; 2.czy potęga liczby 2... » 2008-09-03 10:01:16 otóż otrzymałem do zrobienia 2 zadania w C++: 1) napisać program, który pyta o ilość liczb (n), potem prosi o wpisanie z klawiatury tych liczb i podaje ile z nich jest podzielnych przez 3, a ile przez 7. np wpisujemy n=4 3 21 6 8 liczb podzielnych przez 3 jest : 3 liczb podzielnych przez 7 jest : 1 podjąłem próbę zrobienia dla 3 i udało mi się stworzyć coś takiego #include <iostream> #include <conio.h> #include <math.h> #include<stdlib.h> using namespace std; int main() { int n, i, k = 0, z; cout << "Ile liczb chcesz wpisac? \n"; cin >> n; int ciag[ n ]; cout << "podaj te liczby \n"; for( i = 0; i < n; i++ ) cin >> ciag[ n ]; for( ciag[ n ] % 3 == 0; i < n; i++ ) { z = k + 1; } cout << "Liczb podzielnych przez 3 jest " << z << "."; getch(); return( 0 ); } TYLKO PROBLEM JEST W TYM żE TEN PROGRAM NIE DODAJE MI TYCH LICZB, PRóBOWAłEM RóżNYCH KOMBINACJI, ALE KOńCZYłY SIę ONE FIASKIEM (RAZ BYłO TAK żE WYPISAł DOBRZE ILOść ALE WYPISAł MI TO KILKA RAZY, A MA BYĆ RAZ :/) 2. Napisać czy podana liczba jest potęgą liczby 2 jeżeli tak to którą. Tu niestety nie udało mi się nic stworzyć, mogę jedynie się domyślać że trzeba będzie użyć polecenia pow(.,.) lub kombinować z 2^n, ale nie mam zupełnie pomysłu jak to zrobić żeby to sprawdzał i w dodatku podawał którą jest potęgą. Z góry dziękuję za pomoc. |
|
Pito |
» 2008-09-03 11:21:45 Zdeczka przerobiłem twój programik ale chyba domyślisz się o co chodzi #include <iostream> #include <conio.h> #include <math.h> using namespace std; int main() { int n[ 9 ]; int ilosc_n = 0; cout << "podaj ilość liczb : "; cin >> ilosc_n; for( int i = 1; i <= ilosc_n; i++ ) { cout << "liczba " << i << " = "; cin >> n[ i ]; } for( int i = 1; i <= ilosc_n; i++ ) { if( n[ i ] % 3 == 0 ) cout << endl << "liczby podzielne przez 3 to : " << n[ i ] << endl; } for( int i = 1; i <= ilosc_n; i++ ) { for( int potega = 0; potega < 60; potega++ ) { if( n[ i ] == pow( 2, potega ) ) { cout << "potegom liczby 2 jest : " << n[ i ] << endl; } } } getch(); return( 0 ); }
|
|
DejaVu |
» 2008-09-03 11:47:01 #include <iostream> #include <conio.h> using namespace std; int main() { int n, liczba, trzy = 0, siedem = 0; cout << "Ile liczb chcesz wpisac? \n"; cin >> n; cout << "podaj te liczby \n"; for( int i = 0; i < n; i++ ) { cin >> liczba; if( liczba % 3 == 0 ) trzy++; if( liczba % 7 == 0 ) siedem++; } cout << "Liczb podzielnych przez 3 jest " << trzy << "." << endl; cout << "Liczb podzielnych przez 7 jest " << siedem << "." << endl; getch(); return( 0 ); }
/edit: Sprawdzanie czy liczba jest potęgą: int potega =( int ) pow( liczba, 0.5f ); if( pow( 2, potega ) == liczba ) { cout << "Liczba " << liczba << " jest " << potega << " potega liczby 2." << endl; } /edit2: Powyższy fragment do sprawdzania czy liczba jest potęgą działa prawidłowo wtedy i tylko wtedy, gdy z liczby można wyciągnąć pierwiastek. Przykładowo: 4,16,64,256... itd Nie zadziała dla: 2,8,32,128... itd Poprawić można kod następująco: int potega =( int ) pow( liczba, 0.5f ); if( pow( 2, potega ) == liczba ) { cout << "Liczba " << liczba << " jest " << potega << " potega liczby 2." << endl; } else if( pow( 2, potega + 1 ) == liczba ) { cout << "Liczba " << liczba << " jest " << potega + 1 << " potega liczby 2." << endl; } |
|
siemes Temat założony przez niniejszego użytkownika |
dziękuję » 2008-09-03 11:50:55 Dziękuję Panie Piotrze :) o to chodziło |
|
siemes Temat założony przez niniejszego użytkownika |
zad » 2008-09-03 20:03:33 pojawił się problem dla modyfikacji zadania, które zostało zrobione powyżej postaram się napisać to w miarę klarownie. Chciałbym zrobić żeby program wskazał mi na koniec liczby jednocześnie podzielne przez 3 i 7 tzn. miałoby to wyglądać następująco: ilość wbijanych liczb wbijane liczby liczby podzielne przez 3 i 7 to : ... przy czym zrobiłem program #include <iostream> #include <conio.h> using namespace std; int main() { int n, liczba; cout << "Ile liczb chcesz wpisac? \n"; cin >> n; cout << "podaj te liczby \n"; for( int i = 0; i < n; i++ ) { cin >> liczba; if( liczba % 3 == 0 && liczba % 7 == 0 ) cout << "liczba " << liczba << " jest podzielna przez 3 i 7 \n"; } getch(); return( 0 ); } i wyświetla mi bezpośrednio pod liczbą że jest ona podzielna przez 3 i 7, a chciałbym na końcu zebrać te liczby. np wbiłem liczby 12, 21, 9, 42 i w moim programie wygląda to następująco 12 21 liczba 21 jest .... 9 42 liczba 42 jest ... a chciałbym żeby to wyglądało 12 21 9 42 liczby podzielne przez 3 i 7 to : 21, 42 Proszę o pomoc |
|
DejaVu |
Liczby podzielne przez 3 i 7 » 2008-09-03 20:12:32 Liczby podzielne przez 3 i 7 #include <iostream> #include <conio.h> using namespace std; int main() { int n, liczba, trzy = 0, siedem = 0; cout << "Ile liczb chcesz wpisac? \n"; cin >> n; int liczby[ n ]; int uzyto = 0; cout << "podaj te liczby \n"; for( int i = 0; i < n; i++ ) { cin >> liczba; if( liczba % 3 == 0 ) trzy++; if( liczba % 7 == 0 ) siedem++; if( liczba % 3 == 0 && liczba % 7 == 0 ) { liczby[ uzyto ] = liczba; uzyto++; } } cout << "Liczb podzielnych przez 3 jest " << trzy << "." << endl; cout << "Liczb podzielnych przez 7 jest " << siedem << "." << endl; cout << "Liczby podzielne przez 3 i 7: "; if( uzyto > 0 ) { for( i = 0; i < uzyto; i++ ) cout << liczby[ i ] << ","; } else cout << "brak liczb"; cout << endl; getch(); return( 0 ); }
|
|
siemes Temat założony przez niniejszego użytkownika |
jeszcze pytanie » 2008-09-05 16:38:51 Jest zadanie żeby użytkownik podał 20 małych liter a,b i c i żeby program policzył których jest najmniej a których najwięcej. I mam #include <iostream> #include <conio.h> using namespace std;
int main() { cout << "podaj 20 malych liter sposrod a,b i c " << endl; int j = 1, a = 0, b = 0, c = 0, i, max = 0, min; while( j ) { if( j == 10 ) break; j = getc( stdin ); if( j == 97 ) a++; else if( j == 98 ) b++; else if( j == 99 ) c++; } min = a; cout << "Liter a jest " << a << endl; cout << "Liter b jest " << b << endl; cout << "Liter c jest " << c << endl; for( i = 1; i <= 3; i++ ) { if( a > max ) max = a; else if( a < min ) min = a; if( b > max ) max = b; else if( b < min ) min = b; if( c > max ) max = c; else if( c < min ) min = c; } cout << "Najwiecej (abc) jest liter: " << endl; if( max == a ) cout << "a"; if( max == b ) cout << "b"; if( max == c ) cout << "c"; cout << endl; cout << "Najmniej (abc) jest liter: " << endl; if( min == a ) cout << "a"; if( min == b ) cout << "b"; if( min == c ) cout << "c"; cout << endl; getch(); return( 0 ); } i wszystko działa ładnie tyle że mogę wpisać dowolną ilość liter. gdzie i co wstawić żeby program się kończył po wpisaniu złej ilości liter lub złych liter. A 2 pytanie odnosi się do rzeczy już tu zrobionej a mianowicie czy dana liczba jest potęgą liczby 2, jeśli tak to którą. Wzór który został podany wyżej mi nie działa (chyba że jest coś źle wbite) a mam zrobione tyle #include <iostream> #include <conio.h> #include <math.h> using namespace std; int main() { int liczba; cout << "podaj liczbe \n"; cin >> liczba; int potega =( int ) pow( 0.5f, liczba ); if( pow( 2, potega ) == liczba ) { cout << "Liczba " << liczba << " jest " << potega << " potega liczby 2." << endl; } else cout << "Liczba " << liczba << " nie jest potega liczby 2." << endl; getch(); return( 0 ); } Proszę o pomoc |
|
DejaVu |
» 2008-09-06 15:22:39 Nie dawaj ciągle nowych problemów w jednym temacie bo nie chce mi się na nie odpowiadać. Powstaje przez to bałagan na forum. /edit: Co do potęgi: #include <iostream> #include <conio.h> int CzyPotegaLiczbyDwa( int liczba ) { int potega = 0; if( liczba <= 0 ) return - 1; while( liczba > 1 ) { if( liczba % 2 != 0 ) return - 1; liczba /= 2; potega++; } return potega; }
using namespace std; int main() { int liczba; cout << "podaj liczbe \n"; cin >> liczba; int potega = CzyPotegaLiczbyDwa( liczba ); if( potega !=- 1 ) { cout << "Liczba " << liczba << " jest " << potega << " potega liczby 2." << endl; } else cout << "Liczba " << liczba << " nie jest potega liczby 2." << endl; getch(); return( 0 ); }
/edit2: Drugie rozwiązanie potęgi z wykorzystaniem poprzedniego rozwiązania: #include <iostream> #include <conio.h> #include <math.h>
using namespace std; int main() { int liczba; cout << "podaj liczbe \n"; cin >> liczba; int potega =( int ) pow( liczba, 0.5f ); if( pow( 2, potega ) == liczba ) { cout << "Liczba " << liczba << " jest " << potega << " potega liczby 2." << endl; } else if( pow( 2, potega + 1 ) == liczba ) { cout << "Liczba " << liczba << " jest " << potega + 1 << " potega liczby 2." << endl; } else { cout << "Liczba " << liczba << " nie jest potega liczby 2." << endl; } getch(); return( 0 ); } |
|
« 1 » 2 |