nUUb Temat założony przez niniejszego użytkownika |
Tablice jednowymiarowe - zadanie. » 2011-06-29 16:27:32 Kalkulator prosty: #include <iostream> #include <conio.h> using namespace std; int wczytajLiczbe() { double a; bool sprawdz1; cin >> a; sprawdz1 = cin.good(); cin.clear(); cin.sync(); if( sprawdz1 == false ) do { cout << "To nie jest cyfra, sprobuj jeszcze raz" << endl; cout << "Wprowadz pierwsza liczbe: " << endl; cin >> a; sprawdz1 = cin.good(); cin.clear(); cin.sync(); } while( sprawdz1 == false ); return a; } int wczytajLiczbe2() { double b; bool sprawdz1; cin >> b; sprawdz1 = cin.good(); cin.clear(); cin.sync(); if( sprawdz1 == false ) do { cout << "To nie jest cyfra, sprobuj jeszcze raz" << endl; cout << "Wprowadz druga liczbe: " << endl; cin >> b; sprawdz1 = cin.good(); cin.clear(); cin.sync(); } while( sprawdz1 == false ); return b; } int main() { int zmienna; bool sprawdz3; cout << "Wprowadz pierwsza liczbe: "; double liczba = wczytajLiczbe(); cout << "Wprowadz druga liczbe: "; double liczba2 = wczytajLiczbe2(); cout << "================================" << endl; cout << "| WYBIERZ TYP OPERACJI |" << endl; cout << "| [1] Dodawanie |" << endl; cout << "| [2] Odejmowanie |" << endl; cout << "| [3] Mnozenie |" << endl; cout << "| [4] Dzielenie |" << endl; cout << "| [5] Zakoncz program |" << endl; cout << "================================" << endl; do { zmienna =( zmienna > 0 && zmienna <= 5 ); cout << "Wybierz typ operacji: "; cin >> zmienna; sprawdz3 = cin.good(); cin.clear(); cin.sync(); if( sprawdz3 == false ) do { cout << "Nie ma takiej operacji" << endl; cout << "Wybierz typ operacji: "; cin >> zmienna; sprawdz3 = cin.good(); cin.clear(); cin.sync(); } while( sprawdz3 == false ); switch( zmienna ) { case 1: cout << "Wynik dodawania: " << liczba + liczba2 << endl; break; case 2: cout << "Wynik odejmowania: " << liczba - liczba2 << endl; break; case 3: cout << "Wynik mnozenia: " << liczba * liczba2 << endl; break; case 4: if( liczba2 != 0 ) cout << "Wynik dzielenia: " << liczba / liczba2 << endl; else cout << "Przepraszamy, nie mozna wykonac dzielenia przez 0" << endl; break; default: cout << "Nie ma takiej operacji" << endl; break; } } while( zmienna != 5 ); getch(); return 0; }
Losowanie - gra #include <iostream> #include <cstdlib> #include <ctime> #include <conio.h>
using namespace std; int main() { int wylosowanaLiczba =( rand() % 1001 ) + 1; int zgadywanaLiczba; bool poprawnosc; int liczbaStrzalow = 0; cout << "============================" << endl; cout << "| TOTTO LOTTO |" << endl; cout << "| |" << endl; cout << "| Witaj w grze, w ktorej |" << endl; cout << "| twoim celem jest |" << endl; cout << "| odgadniecie liczby |" << endl; cout << "|z przedzialu od 1 do 1000 |" << endl; cout << "| |" << endl; cout << "| !!! ZACZYNAJMY !!! |" << endl; cout << "============================" << endl << endl; do { cout << "Wylosowana liczba to: "; cin >> zgadywanaLiczba; poprawnosc = cin.good(); cin.clear(); cin.sync(); if( poprawnosc == false ) do { cout << "Niestety, to nie jest nawet liczba, sprobuj jeszcze raz" << endl; cout << "Wylosowana liczba to: "; cin >> zgadywanaLiczba; poprawnosc = cin.good(); cin.clear(); cin.sync(); } while( poprawnosc == false ); if( zgadywanaLiczba > 1000 || zgadywanaLiczba < 1 ) cout << "Musisz podac liczbe z zakresu od 1 do 1000" << endl; else liczbaStrzalow++; if( zgadywanaLiczba > wylosowanaLiczba ) cout << "Wylosowana liczba jest mniejsza, sprobuj ponownie!" << endl; if( zgadywanaLiczba < wylosowanaLiczba ) cout << "Wylosowana liczba jest wieksza, nie poddawaj sie!" << endl; } while( wylosowanaLiczba != zgadywanaLiczba ); cout << endl << endl << "GRATULACJE! UDALO CI SIE!" << endl << endl << "Wylosowana liczba: " << wylosowanaLiczba << endl; cout << "Ilosc twoich prob: " << liczbaStrzalow << endl; getch(); return 0; }
Tablice jednowymierowe: #include <iostream> #include <ctime> #include <cstdlib> using namespace std; int main() { srand( time( NULL ) ); int liczba[ 998 ]; int licznik = 0; cout << "Wylosowane liczby: " << endl << endl; do { liczba[ licznik ] =( rand() % 7 ) + 4; cout << liczba[ licznik ] << endl << endl; licznik++; } while( licznik < 998 ); cout << "Dodane wszystkie wylosowane liczby: " << endl << endl; do { cout << liczba[ licznik ] + liczba[ licznik++ ]; licznik++; } while( licznik < 997 ); return 0; } Tak więc, wkleiłem tutaj trzy kody źródłowe z 3 różnych zadań, ale najbardziej interesuje mnie pytanie dotyczące tablic dlatego też taki temat. Zaczynając: 1. Kalkulator prosty - stworzyłem tam dwie funkcje osobne dla liczb a i b, pytanie czy dało się to jakoś połączyć żeby kod był krótszy? Czy to normalne, że z każdym kolejnym programem ilośc lini kodu będzie się zwiększała kilka razy? 2. Losowanie - gra - chce się tylko upewnić, jak chce zrobić zakres od 1 (włącznie) do 1000 (włącznie) to należy to zapisać tak: ( rand() % 1001 ) + 1 czy tak ( rand() % 1000 ) + 1 3. Dodawanie wszystkie wylosowanych liczb jest napisane poprawnie? Jeśli nie, to poprosiłbym o jakąś wskazówkę. |
|
DejaVu |
» 2011-06-29 16:45:48 cout << liczba[ licznik ] + liczba[ licznik++ ];
Kto Ciebie tego nauczył? (to jest źle) |
|
Dawidsoni |
» 2011-06-29 16:50:37 1. Tak można zrobić z tego 1 funkcję. Wywal teksty: "Podaj 1 liczbę" i "Podaj 2 liczbę" z funkcji i wstaw je przed ich wywołaniem. Potem 1 z funkcji usuń i jest OK. 2. To poprawne: ( rand() % 1000 ) + 1 3. Wprowadź zmienną suma, która za każdym obejściem 1 pętli będzie powiększała się o wylosowaną liczbę. |
|
nUUb Temat założony przez niniejszego użytkownika |
Re: » 2011-06-29 16:50:54 Cóż, uczę się tylko z tego kursu, więc nikt mnie tego nie nauczył. Pomysł na taki zapis pojawił mi się po prostu w głowie, jak widać niepoprawnie. |
|
ison |
» 2011-06-29 17:01:43 1. Kalkulator prosty - stworzyłem tam dwie funkcje osobne dla liczb a i b, pytanie czy dało się to jakoś połączyć żeby kod był krótszy?
|
tak jak Dawidsoni lub void wczytajLiczbe( int & liczba_do_wczytania ) { bool sprawdz1; cin >> liczba_do_wczytania; sprawdz1 = cin.good(); cin.clear(); cin.sync(); if( sprawdz1 == false ) do { cout << "To nie jest cyfra, sprobuj jeszcze raz" << endl; cout << "Wprowadz pierwsza liczbe: " << endl; cin >> liczba_do_wczytania; sprawdz1 = cin.good(); cin.clear(); cin.sync(); } while( sprawdz1 == false ); }
int liczba, liczba2; cout << "Wprowadz pierwsza liczbe: "; wczytajLiczbe( liczba ); cout << "Wprowadz druga liczbe: "; wczytajLiczbe( liczba2 );
Żeby zrozumieć powyższy kod jak działa i dlaczego działa poczytaj o referencjach Czy to normalne, że z każdym kolejnym programem ilośc lini kodu będzie się zwiększała kilka razy?
|
z kolejnym czyli z kolejnym zadaniem na tej stronie? Zazwyczaj jest tak, że jeśli program jest bardziej skomplikowany to jest dłuższy, aczkolwiek zawsze dany problem da się rozwiązać na wiele sposobów, więc należy szukać tego najoptymalniejszego; z czasem niektóre kody, które kiedyś zajmowały 100 linii będą teraz zajmowały 10 linii 2. Losowanie - gra - chce się tylko upewnić, jak chce zrobić zakres od 1 (włącznie) do 1000 (włącznie) to należy to zapisać tak: ( rand() % 1001 ) + 1 czy tak ( rand() % 1000 ) + 1
|
to drugie :) |
|
Elaine |
» 2011-06-29 17:14:16 int wczytajLiczbe( int & liczba_do_wczytania ) { bool sprawdz1; cin >> liczba_do_wczytania; sprawdz1 = cin.good(); cin.clear(); cin.sync(); if( sprawdz1 == false ) do { cout << "To nie jest cyfra, sprobuj jeszcze raz" << endl; cout << "Wprowadz pierwsza liczbe: " << endl; cin >> liczba_do_wczytania; sprawdz1 = cin.good(); cin.clear(); cin.sync(); } while( sprawdz1 == false ); }
|
A teraz zrób to samo, tylko poprawnie i bez powtarzania kodu. |
|
ison |
» 2011-06-29 17:23:33 Sorki, skopiowałem kod nie zauważyłem, już poprawione ;) |
|
Elaine |
» 2011-06-29 17:30:28 |
|
« 1 » 2 |