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

Błędy w programach

Ostatnio zmodyfikowano 2011-05-31 08:24
Autor Wiadomość
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
C/C++
#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 ):

C/C++
#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 .
P-33627
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: » Kurs C++ » Poziom 2Przekazywanie tablic jednowymiarowych do funkcji lekcja.

/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.
P-33628
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

P-33629
DejaVu
» 2011-05-29 18:27:58
Jeżeli wpiszesz 'a' to na pewno to nie jest prawidłowa liczba :)
P-33630
Mrowqa
» 2011-05-29 18:47:52
C/C++
int sumujTablice( int tablica[], int ile )
{
    int a = 0; // !!! a to co ?? :P
    int z = 0;
    do
    {
        cout << a + tablica[ z ] << endl; // tu ??
        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
P-33631
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 ^^ :

C/C++
#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 ); // napisałem też odpowiednik pętlą while ...  ;/ ( w komentarzu )
        /*
        while ( b==0 )
        {
        cin >> c;
        b=c;
        }
        */
        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();
        /* MENU */
        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ę. :)
 
P-33660
DejaVu
» 2011-05-30 17:43:37
  • 1 temat = jeden problem.
  • Zapoznaj się z » KursyKurs STC kurs.
P-33661
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 ;)
P-33662
« 1 » 2
  Strona 1 z 2 Następna strona