Wątek przeniesiony 2015-03-17 14:13 z C/C++ przez ŁF.

Tablica i funkcje - błąd o zbyt dużej liczbie argumentów

0

Przy kompilacji ciagle wyrzuca mi error ze podalem za duzo argumentow do funkcji a ja nie widze zebym podal za duzo, prosilbym o podpowiedz, kod wyglada tak:

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

void wylosujLiczby(int t[], int od, int do1)
{
  srand(time(NULL));
  cout << "Wykonam teraz 999 losowan liczb z zakresu od 4 do 10..." << endl;
  int losowa = 0;
  do
    {
      t[losowa] =(rand() % do1 ) + od;
      losowa++;
    }while(losowa < 999);
}
void obliczSume(int t[], int losowa)
{
  cout << "A teraz dodam je do siebie..." << endl;
  int suma = 0;
  int losowa = 0;
  do
    {
      suma += t[losowa];
      losowa++;
    }while(suma < 999);
  cout << "Suma wynosi: " << suma << endl
}
void wypiszLiczby(int t[])
{
    cout << "A teraz je wypisze..." << endl;
    cout << "Wylosowane liczby to: ";
    int losowa = 0;
    do
    {
    cout << t[losowa] << ", ";
    losowa++;
    }while( losowa < 999);
}

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

2

Policzmy sobie:

void wylosujLiczby(int t[], int od, int do1)
                         1       2        3
wylosujLiczby(tablica, 999, 4, 10);
                    1    2  3   4
0

No to zrobilem tez

void wylosujLiczby(int t[], int losowa, int od, int do1)
                                   1       2                3        4

ale tak samo mowi ze za duzo argumentow.
@Edit, a nie teraz lepiej, wczesniej cos zle musialem zobaczyc

dodanie znacznika <code class="cpp"> - @furious programming

0
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

void wylosujLiczby(int t[], #tutaj nie wiem co#, int od, int do1)
{
  srand(time(NULL));
  cout << "Wykonam teraz 999 losowan liczb z zakresu od 4 do 10..." << endl;
  int losowa = 0
  do
    {
      t[licznik] =(rand() % do1 ) + od;
      losowa++;
    }while(licznik < 999);
}
void obliczSume(int t[], #tutaj nie wiem co#)
{
  cout << "A teraz dodam je do siebie..." << endl;
  int  t[999];
  int suma = 0;
  int losowa = 0;
  do
    {
      suma += t[losowa];
      losowa++;
    }while(suma < losowa);
  cout << "Suma wynosi: " << suma << endl
}
void wypiszLiczby(int t[], #tutaj nie wiem co#)
{
    cout << "A teraz je wypisze..." << endl;
    cout << "Wylosowane liczby to: ";
    int  t[999];
    int losowa = 0;
    do
    {
    cout << t[losowa] << ", ";
    losowa++;
    }while( losowa < 999);
}

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

bledy

b2.cpp: In function ‘void wylosujLiczby(int*, int, int)’:
b2.cpp:11:3: error: expected ‘,’ or ‘;’ before ‘do’
   do
   ^
b2.cpp: In function ‘void wypiszLiczby(int*)’:
b2.cpp:38:22: error: ‘licznik’ was not declared in this scope
     }while( losowa < licznik);
                      ^
b2.cpp: In function ‘int main()’:
b2.cpp:44:38: error: too many arguments to function ‘void wylosujLiczby(int*, int, int)’
   wylosujLiczby( tablica, 999, 4, 10 );
                                      ^
b2.cpp:6:6: note: declared here
 void wylosujLiczby(int t[], int od, int do1)
      ^
b2.cpp:45:40: error: too many arguments to function ‘void obliczSume(int*)’
   int iSuma = obliczSume( tablica, 999 );
                                        ^
b2.cpp:17:6: note: declared here
 void obliczSume(int t[])
      ^
b2.cpp:45:40: error: void value not ignored as it ought to be
   int iSuma = obliczSume( tablica, 999 );
                                        ^
b2.cpp:46:29: error: too many arguments to function ‘void wypiszLiczby(int*)’
   wypiszLiczby( tablica, 999);
                             ^
b2.cpp:29:6: note: declared here
 void wypiszLiczby(int t[])
      ^

nie wiem gdzie rozdac ten argument 999...

0

Tam gdzie nie wiesz co, pewnie chciałeś wpisać argument oznaczający wielkość przekazanej tablicy.

  int losowa = 0
  do

Brak średnika, kompilator wyraźnie to Ci napisał!

Reszta to niepoprawne ilości argumentów.

0

W obliczSume i w wypiszLiczby masz 2 razy tablicę t. Dodatkowo - co to za zmienna #niewiemco? Jesli nie wiesz po co argument, to go nie tworzysz. Się domyślam, że tam chcesz przekazać wielkość tablicy, ale to nie ja jestem od przewidywań, co chcesz uzyskać.

0
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

void wylosujLiczby(int t[], int od, int do1)
{
  srand(time(NULL));
  cout << "Wykonam teraz 999 losowan liczb z zakresu od 4 do 10..." << endl;
  int losowa = 0;
  do
    {
      t[losowa] =(rand() % do1 ) + od;
      losowa++;
    }while(losowa < 999);
}
void obliczSume(int t[])
{
  cout << "A teraz dodam je do siebie..." << endl;
  int losowa = 0;
  int suma = 0;
  do
    {
      suma += t[losowa];
      losowa++;
    }while(losowa < 999 );
  return suma;
}
void wypiszLiczby(int t[])
{
    cout << "A teraz je wypisze..." << endl;
    cout << "Wylosowane liczby to: ";
    int losowa = 0;
    do
    {
    cout << t[losowa] << ", ";
    losowa++;
    }while( losowa < 999);
}
int main()
{
  int tablica[ 999 ];
  wylosujLiczby( tablica, 4, 10 );
  int iSuma = obliczSume( tablica );
  wypiszLiczby( tablica );
  std::cout << "Suma liczb wynosi: " << iSuma << std::endl;
  return 0;
}

ostatni error

b2.cpp: In function ‘int main()’:
b2.cpp:45:35: error: void value not ignored as it ought to be
   int iSuma = obliczSume( tablica );
1

obliczSume jest zdefiniowane jako funkcja zwracająca void, czyli nic.

3

deklaracja: void obliczSume(int t[])
ciało funkcji: return suma;
wywołanie: int iSuma = obliczSume( tablica );

Gdybyś się zastanowił pięć minut, to sam byś to wymyślił. Przy okazji - proponuję czytać błędy zgłaszane przez kompilator ZE ZROZUMIENIEM.

0

Niestety, dalej nie rozumiem jak to naprawic... nawet jak nie dam - return suma; - to tak sam blad zwraca

1

Zmień void na int. Funkcja zwraca int, więc deklaracją zwracanego typu ma być int, a nie void...
Poza tym włącz myślenie. Jak funkcja ma cokolwiek zwrócić (oczekujesz int - int iSuma = obliczSume( tablica );), kiedy usuniesz z niej return ("nawet jak nie dam - return suma").

1

Tylko że błąd jest w miejscu, gdzie oczekujesz jakiejś wartości z tej funkcji

int iSuma = obliczSume( tablica );
0

Super ! Dziekuje, szczerze mowiac to nie wiedzialem wcale czym jest void, no to teraz zapamietam, dziekuje :)

0

Pewnie to wina rumu w tajlandii lub tego ze mi wylosowalo takiego nicka ale "uzekla mnie ta historia"....

Propojuje na drugi raz czytac uwazniej komunikaty i/lub podawac je w tresci pytania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1