jaupl Temat założony przez niniejszego użytkownika |
Błędy w programach » 2011-05-29 16:21:45 Witam.
Jestem początkujący zacząłem robić kurs c++ i jak to każdy natrafiłem na błędy.
Byłbym wdzięczny za odpowiedź w czym ten błąd tkwi w kilku zadaniach domowych kursu zrobionych przeze mnie. oto moje niby programy :
1. Zadanie z działu 23: http://cpp0x.pl/kursy/Kurs-C++/Poziom-3 /Zmienne-przechowujace-tekst/349
#include <iostream> using namespace std;
int main() { string wyraz; string wyjscie; int c; for( c = 1; c < 10; c++ ) { cout << " podaj wyraz nr :" << c << endl; cin >> wyraz; string wyjscie = wyjscie + wyraz; wyjscie += ", "; wyraz.clear(); } cout << wyjscie << endl; return 0; }
Program się włącza ale po wczytaniu pierwszej zmiennej wyskakuje błąd. ;/
2. Zadanie z poprzednich działów ( bodajże Przekazywanie tablic jednowymiarowych do funkcji ):
#include <iostream> using namespace std;
int wypiszTablice( int tablica[], int ile ) { for( int z = 0; z < ile; z++ ) { cout << tablica[ z ] << endl; } return 0; } void wczytajTablice( int tablica[], int ile ) { for( int z = 0; z < ile; z++ ) { std::cout << "Podaj liczbe " <<( z + 1 ) << ": "; std::cin >> tablica[ z ]; } } int sumujTablice( int tablica[], int ile ) { int a = 0; int z = 0; do { cout << a + tablica[ z ] << endl; z++; } while( z < ile ); return 0; } int main() { int tablica[ 5 ]; wczytajTablice( tablica[], 5 ); wypiszTablice( tablica[], 5 ); sumujTablice( tablica[], 5 ); return 0; }
Tu już całkiem się pomieszałem i nie mam zielonego pojęcia o co chodzi . Może coś przeoczyłem za sugestie z góry dzięki. :)
Będę wdzięczny za szybką odpowiedź, ponieważ chciałbym kontynuować naukę języka a jest to nie możliwe bez pełnego opanowania poszczególnych działów . |
|
DejaVu |
» 2011-05-29 17:02:31 Do zad 1: popatrz na tworzenie zmiennej o nazwie wyjscie.
/edit:
Zad 2: Źle przekazujesz tablice do funkcji: Przekazywanie tablic jednowymiarowych do funkcji.
/edit2:
Doprecyzowując sformułowanie dot. drugiego zadania to chodzi o złe wywoływanie funkcji. Kompilator Ci wskazał wiersz w którym masz błąd. |
|
jaupl Temat założony przez niniejszego użytkownika |
» 2011-05-29 17:53:17 Wielkie dzięki ;) Już wszystko działa . Chociaż mam jeszcze problem z następującym zadaniem :
Napisz funkcję, która będzie wczytywała liczby ze standardowego wejścia i zwracała wczytaną wartość. Funkcja ma zagwarantować, że zwracana liczba zawsze jest poprawna. Oznacza to, że funkcja będzie musiała pytać użytkownika o wprowadzenie liczby dopóki nie poda poprawnej.
Co oznacza że liczba zwrócona przez funkcję jest poprawna ? że liczba zwracana przez nią ma być dokładnie taka jaką podał użytkownik jako argument czy chodzi o coś innego ?? wiadomo jeśli funkcja ma zwrócić wartość int to nie może przez użytkownika zostać podana liczba z poza zakresu liczb rzeczywistych. o to chodzi? Nie bardzo rozumiem co tak w zasadzie autor zadania miał na myśli. ;/ Dzięki za wytłumaczenie i sorki za problem. ;p
|
|
DejaVu |
» 2011-05-29 18:27:58 Jeżeli wpiszesz 'a' to na pewno to nie jest prawidłowa liczba :) |
|
Mrowqa |
» 2011-05-29 18:47:52 int sumujTablice( int tablica[], int ile ) { int a = 0; int z = 0; do { cout << a + tablica[ z ] << endl; z++; } while( z < ile ); return 0; }
Tak po za tym a a 'a' to różnica jest :P 'a' to 97 :P O ile w tym problem :P Bo też niezbyt łapię o co chodzi :P |
|
jaupl Temat założony przez niniejszego użytkownika |
» 2011-05-30 17:40:04 Hmmm ... mam jeszcze to : Dzisiaj napisałem kalkulator który ma się opierać na funkcjach. Wszystko działa jak należy. Jest tylko jeden problem. Gdy użytkownik wpisuje 0 jako wartość przez którą ma być podzielona poprzednia podana i program prosi o podanie nowego mianownika, pętla którą tam zamieszczam wykonuje się co najmniej 2 razy ( nie ważne czy while czy do ... while ) ;/ nie wiem za bardzo jak sprawić żeby trzeba było wartość podawać tylko RAZ ! (oczywiście gdy jest różna od 0) A oto programik ^^ : #include <iostream> using namespace std; int wprowadz() { int a; cin >> a; return a; } int wprowadz2() { int b; cin >> b; return b; } int dodawanie( int a, int b ) { return a + b; } int odejmowanie( int a, int b ) { return a - b; } int mnozenie( int a, int b ) { return a * b; } int dzielenie( int a, int b ) { if( b != 0 ) return a / b; else { cout << " NIE MOZNA DZIELIC PRZEZ ZERO !! Podaj inny mianownik :" << endl; int c; do { cin >> c; b = c; } while( b == 0 ); return a / b; } } int main() { int x, liczba, wynik; do { cout << "Podaj dwie liczby miedzy ktorymi chcesz wykonac dzialanie: " << endl; cout << "pierwsza : " << endl; int a = wprowadz(); cout << "A teraz druga: " << endl; int b = wprowadz2(); cout << "Napisz jakie dzialanie chcesz wykonac :" << endl; cout << " 1.-Dodawanie." << endl; cout << " 2.-Odejmowanie." << endl; cout << " 3.-Mnozenie." << endl; cout << " 4.-Dzielenie." << endl; cout << " 5.- Wyjscie z progrmu." << endl; cin >> liczba; switch( liczba ) { case 1: dodawanie( a, b ); wynik = dodawanie( a, b ); cout << " Oto wynik dodawania: " << wynik << endl; break; case 2: odejmowanie( a, b ); wynik = odejmowanie( a, b ); cout << " Oto wynik odejmowania: " << wynik << endl; break; case 3: mnozenie; wynik = mnozenie( a, b ); cout << " oto wynik mnozenia: " << wynik << endl; break; case 4: dzielenie( a, b ); wynik = dzielenie( a, b ); cout << " oto wynik dzielenia: " << wynik << endl; break; case 5: x = 1; break; default: cout << "z³y operator !!" << endl; break; } } while( x != 1 ); return 0; } Wiem, że ma kilka wad poza tą którą już wymieniłem tyle, że nad nimi, spróbuję się zastanowić sam :) Za odpowiedź na pytanie jak rozwiązać wyżej opisany problem z góry dziękuję. :) |
|
DejaVu |
» 2011-05-30 17:43:37 |
|
jaupl Temat założony przez niniejszego użytkownika |
» 2011-05-30 17:46:19 Sory ;P Następnym razem będę pamiętał. hmm ... muszę w końcu przeczytać regulamin ;) |
|
« 1 » 2 |