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

[Lekcja 19] Błąd podczas kompilacji, co oznacza?

Ostatnio zmodyfikowano 2012-03-13 18:09
Autor Wiadomość
abcde
Temat założony przez niniejszego użytkownika
[Lekcja 19] Błąd podczas kompilacji, co oznacza?
» 2012-03-12 22:14:09
Mam taki oto kod, który nie chce się skompilować

C/C++
#include <cstdlib>
#include <iostream>
#include <ctime>

void wylosujLiczby( int tablica[], int liczba ) //int a, int b) ewentualnie
{
    srand( time( NULL ) );
    std::cout << "Losowanie liczb:" << std::endl;
    int proby = 0;
    do
    {
        tablica[ proby ] =(( rand() % 7 ) + 4 );
        proby++;
       
    } while( proby <= liczba );
   
}

void wypiszLiczby( int tablica[], int liczba )
{
    std::cout << "Wylosowane liczby to:" << std::endl;
    int proby = 0;
   
    do
    {
        std::cout << tablica[ proby ] << std::endl;
        proby++;
    } while( proby <= liczba );
   
}

void obliczSume( int tablica[], int liczba )
{
    int suma = 0;
    int proby = 0;
    do
    {
        suma += tablica[ proby ];
        proby++;
    } while( proby <= liczba );
   
}

int main()
{
    int tablica[ 20 ];
    wylosujLiczby( tablica, 20 );
    wypiszLiczby( tablica, 20 );
    int iSuma = obliczSume( tablica, 20 );
    std::cout << "Suma liczb wynosi: " << iSuma << std::endl;
    return 0;
}
Otrzymuje błąd:
error: void value not ignored as it ought to be
Co on oznacza.
Przy okazji na kod możecie zerknąć również.
Na wasze uwagi zerknę dopiero jutro po południu także pozdrawiam.



P-52530
Fabjan94
» 2012-03-13 07:39:07
A gdzie główna funkcja?
P-52541
fish13
» 2012-03-13 07:45:13
P-52542
Fabjan94
» 2012-03-13 12:08:08
błąd polega na tym że wywołując zmienna
int iSuma = obliczSume( tablica, 20 );
 sugerujesz się na funkcji
void obliczSume( int tablica[], int liczba )
. Rozwiązanie tego jest dość łatwe, gdyż wystarczy zmienić void na zmienną liczbową i zastosować e niej to, by zwracała potrzebną Ci zmienna.
P-52544
abcde
Temat założony przez niniejszego użytkownika
» 2012-03-13 17:37:19
Dokonałem zmian tak, aby wszystko działało, ale pojawił się kolejny problem:
Otóż program działa kompiluje się, ale znowu błędnie mi sumuje.
A sumuje błędnie dlatego, że wychodzę poza zakres.
Zastanawiam się jak to zmienić:
while( proby <= liczba );
Przynajmniej tak mi się wydaje i po moim testach wychodzi, że tutaj wychodzę poza zakres dlatego błędny wynik.
Kod:
C/C++
#include <cstdlib>
#include <iostream>
#include <ctime>

void wylosujLiczby( int tablica[], int liczba ) //int a, int b) ewentualnie
{
    srand( time( NULL ) );
    std::cout << "Losowanie liczb." << std::endl;
    int proby = 0;
    do
    {
        tablica[ proby ] =(( rand() % 7 ) + 4 );
        proby++;
       
    } while( proby <= liczba );
   
}

void wypiszLiczby( int tablica[], int liczba )
{
    std::cout << "Wylosowane liczby to:" << std::endl;
    int proby = 0;
   
    do
    {
        std::cout << tablica[ proby ] << std::endl;
        proby++;
    } while( proby <= liczba );
   
   
}

int obliczSume( int tablica[], int liczba )
{
    int suma = 0;
    int proby = 0;
    do
    {
        suma += tablica[ proby ];
        proby++;
    } while( proby <= liczba );
   
    return suma;
   
}

int main()
{
    int tablica[ 20 ];
    wylosujLiczby( tablica, 20 );
    wypiszLiczby( tablica, 20 );
    int iSuma = obliczSume( tablica, 20 );
    std::cout << "Suma liczb wynosi: " << iSuma << std::endl;
    return 0;
}

Edit:
Najłatwiej to zmienić moim zdaniem w ten sposób i nawet działa prawidłowo:
while( proby <= liczba - 1 );
Ale czy tak może być i jest w ogóle prawidłowo?
P-52552
Fabjan94
» 2012-03-13 18:05:28
A nie lepiej po prostu wpisać sam znak mniejszość?
P-52554
abcde
Temat założony przez niniejszego użytkownika
» 2012-03-13 18:09:09
Też już właśnie tak zmieniłem.
Jak ja czasami kombinuje, aż sam się dziwie potem jak widzę prawidłowy już swój efekt finalny.
Tak jak już raz pisałem. Dawno się tak nie namyślałem.
P-52556
« 1 »
  Strona 1 z 1