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

Lekcja 19 praca domowa

Ostatnio zmodyfikowano 2015-10-07 18:17
Autor Wiadomość
ghost25
Temat założony przez niniejszego użytkownika
Lekcja 19 praca domowa
» 2015-10-06 19:52:18
Przy kopilacji
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

int * wypelnij_tablice( int tablica[ 999 ] )
{
    int licznik = 0;
    do
    {
        tablica[ licznik ] =( std::rand() % 7 ) + 4;
        licznik++;
    } while( licznik < 999 );
   
    return tablica;
}
int dodaj( int suma, int wypelnij_tablice_return[ 999 ] )
{
    wypelnij_tablice_return = wypelnij_tablice( 0 );
    int licznik = 0;
    suma = wypelnij_tablice_return[ licznik ];
    licznik++;
    do
    {
        suma = suma + wypelnij_tablice[ licznik ];
        licznik++;
    } while( licznik < 999 );
   
    return suma;
}
int main( int wypelnij_tablice_return2[ 999 ], int dodaj_return )
{
    srand( time( NULL ) );
    int licznik = 0;
    wypelnij_tablice_return2 = wypelnij_tablice();
    dodaj_return = dodaj();
    do
    {
        std::cout << wypelnij_tablice[ licznik ];
        licznik++;
    } while( licznik < 999 );
   
    std::cout << "Suma to " << dodaj_return;
}

Kompilator zwraca błąd:
E:\Dokumenty\C++\zad14\zad14.cpp||In function 'int dodaj(int, int*)':|
E:\Dokumenty\C++\zad14\zad14.cpp|23|warning: pointer to a function used in arithmetic [-Wpointer-arith]|
E:\Dokumenty\C++\zad14\zad14.cpp|23|warning: pointer to a function used in arithmetic [-Wpointer-arith]|
E:\Dokumenty\C++\zad14\zad14.cpp|23|error: invalid conversion from 'int* (*)(int*)' to 'int' [-fpermissive]|
E:\Dokumenty\C++\zad14\zad14.cpp|28|warning: first argument of 'int main(int*, int)' should be 'int' [-Wmain]|
E:\Dokumenty\C++\zad14\zad14.cpp|28|warning: second argument of 'int main(int*, int)' should be 'char **' [-Wmain]|
E:\Dokumenty\C++\zad14\zad14.cpp||In function 'int main(int*, int)':|
E:\Dokumenty\C++\zad14\zad14.cpp|32|error: too few arguments to function 'int* wypelnij_tablice(int*)'|
E:\Dokumenty\C++\zad14\zad14.cpp|5|note: declared here|
E:\Dokumenty\C++\zad14\zad14.cpp|33|error: too few arguments to function 'int dodaj(int, int*)'|
E:\Dokumenty\C++\zad14\zad14.cpp|15|note: declared here|
E:\Dokumenty\C++\zad14\zad14.cpp|36|warning: pointer to a function used in arithmetic [-Wpointer-arith]|
||=== Build failed: 3 error(s), 5 warning(s) (0 minute(s), 0 second(s)) ===|
O co chodzi?
P-138212
carlosmay
» 2015-10-06 20:58:26
wypelnij_tablice_return2 = wypelnij_tablice();
 
dodaj_return = dodaj();
 
Wywołujesz funkcje bez argumentów, a definicje funkcji przyjmują argumenty. To tyle co widać na pierwszy rzut oka.

Straszny bałagan w nazwach, nieczytelne, funkcje  i  zmienne mają te same nazwy. Nic z tego nie rozumiem.
Ogarnij bałagan od nowa.

C/C++
wypelnij_tablice_return = wypelnij_tablice( 0 ); // o co w tym chodzi?
int licznik = 0;
suma = wypelnij_tablice_return[ licznik ]; // tutaj już tablica
licznik++;

int main( int wypelnij_tablice_return2[ 999 ], int dodaj_return )
 
ale tego nie widziałem wcześniej. Co tutaj chcesz osiągnąć?
P-138213
ghost25
Temat założony przez niniejszego użytkownika
» 2015-10-07 15:30:24
OK, już chyba rozumiem o co chodzi (przynajmniej część). Nie rozumiem jeszcze tylko dlaczego nie można utworzyć tablicy zmiennych tak normalnie wewnątrz funkcji, tylko trzeba w nawiasie po nazwie funkcji. Przecież to jest kompletnie pozbawione sensu. Czyli po prostu mam wywołać funkcje z argumentem 0?
P-138234
carlosmay
» 2015-10-07 16:17:39
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

void wypelnij_tablice( int tab[], int rozm, int start, int stop )
{
    int i = 0;
    do
    {
        tab[ i++ ] =( std::rand() %( stop - start + 1 ) ) + start;
    } while( i < 999 );
   
}

void wypiszLiczby( int tab[], int rozm )
{
    int i = 0;
    do {
        std::cout << tab[ i++ ] << std::endl;
    } while( i < rozm );
   
}

int obliczSume( int tab[], int rozm ) {
    int i = 0;
    int suma = 0;
    do {
        suma += tab[ i++ ];
    } while( i < rozm );
   
    return suma;
}

int main()
{
    srand( time( 0 ) );
    int tablica[ 999 ];
    wypelnij_tablice( tablica, 999, 4, 10 );
    wypiszLiczby( tablica, 999 );
    int suma = obliczSume( tablica, 999 );
    std::cout << "Suma wynosi " << suma << std::endl;
    return 0;
}
 Masz kod napisany wg scenariusza w zadaniu.
P-138243
ghost25
Temat założony przez niniejszego użytkownika
» 2015-10-07 18:17:45
Dzięki za pomoc
P-138248
« 1 »
  Strona 1 z 1