[C++] tablice, funkcje, losowanie

anilahcim
Użytkownik
Użytkownik
Posty: 209
Rejestracja: 13 lip 2012, o 14:32
Płeć: Kobieta
Lokalizacja: Pcim
Podziękował: 107 razy

[C++] tablice, funkcje, losowanie

Post autor: anilahcim »

Czy mógłby ktoś pomóc mi z tym zadaniem i powiedzieć, co jest nie tak w moim kodzie?

Napisz program, który wylosuje 999 liczb całkowitych z zakresu od 4 do 10 włącznie, wypisze te wartości na ekran, po czym zsumuje je i wynik wypisze na ekran. Wszelkie operacje mają zostać zrealizowane w oparciu o funkcje. Tablica ma być zadeklarowana w funkcji main. Oczekiwane funkcje:
Wypełnienie tablicy o podanym rozmiarze losowymi liczbami z przedziału podawanego przez argumenty funkcji.
Sumowanie określonej ilości liczb znajdujących się w tablicy i zwrot wyniku.
Wypisywanie zawartości tablicy.

Kod: Zaznacz cały

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cmath>

using namespace std;

int wylosujLiczby(int* t, int n, int min, int max)
{
	srand(time(0));
	t[n]=rand()%(max-min+1)+min;
	return t[n];
}

void wypiszLiczby(int* t, int n)
{
	int i;
	for (i=0;i<n;++i)
	cout << t[i] << endl;
}

int obliczSume(int* t, int n)
{
	int i, suma=0;
	for(i=0;i<n;++i)
		suma += t[i];
	return suma;
}

int main()
{
	int* tablica, x;
	int suma=0;
	int p1=4, p2=10;
	x=wylosujLiczby(tablica, 999, p1, p2);
	wypiszLiczby(x, 999);
	suma=obliczSume(tablica, 999);

	cout << "Suma wylosowanych liczb: " << suma << endl;

	system("pause");
	return 0;
}
Z góry dziękuję za pomoc.
Awatar użytkownika
Gadziu
Użytkownik
Użytkownik
Posty: 653
Rejestracja: 7 lut 2009, o 21:08
Płeć: Mężczyzna
Lokalizacja: Warszawa\Radom
Podziękował: 90 razy
Pomógł: 48 razy

[C++] tablice, funkcje, losowanie

Post autor: Gadziu »

Masz kilka błędów i to nie chodzi o literówki, tylko źle deklarujesz zmienne, zły typ, bądź bierzesz wyznacznik, zamiast zwykłej zmiennej. Za dużo masz tam błędów, żebym teraz wszystko analizował. Spróbuj od nowa napisać...
anilahcim
Użytkownik
Użytkownik
Posty: 209
Rejestracja: 13 lip 2012, o 14:32
Płeć: Kobieta
Lokalizacja: Pcim
Podziękował: 107 razy

[C++] tablice, funkcje, losowanie

Post autor: anilahcim »

Gdybym wiedziała, gdzie mam błędy, to mogłabym napisać od nowa Ale będę jeszcze próbować...
Awatar użytkownika
Gadziu
Użytkownik
Użytkownik
Posty: 653
Rejestracja: 7 lut 2009, o 21:08
Płeć: Mężczyzna
Lokalizacja: Warszawa\Radom
Podziękował: 90 razy
Pomógł: 48 razy

[C++] tablice, funkcje, losowanie

Post autor: Gadziu »

Przecież możesz sprawdzić, gdzie one są... Z jakiego kompilatora korzystasz?
anilahcim
Użytkownik
Użytkownik
Posty: 209
Rejestracja: 13 lip 2012, o 14:32
Płeć: Kobieta
Lokalizacja: Pcim
Podziękował: 107 razy

[C++] tablice, funkcje, losowanie

Post autor: anilahcim »

Visual C++ 2010 Express. Pokazuje mi się tylko jeden błąd: error C2664: 'wypiszLiczby' : cannot convert parameter 1 from 'int' to 'int *' (36. linijka).
Awatar użytkownika
Gadziu
Użytkownik
Użytkownik
Posty: 653
Rejestracja: 7 lut 2009, o 21:08
Płeć: Mężczyzna
Lokalizacja: Warszawa\Radom
Podziękował: 90 razy
Pomógł: 48 razy

[C++] tablice, funkcje, losowanie

Post autor: Gadziu »

U mnie pokazuję minimum dwa... Tu masz na pewno działającą funkcję generującą losową tablicę, może pomoże:)

Kod: Zaznacz cały

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

double* tworzTablice(int n, int a=0, int b=10)
{
   assert(n > 0);
   double* t = new double[n];
   for (int i=0; i<n; ++i)
   {
      t[i] = a+(b-a)*rand()/RAND_MAX; // [a,b]
   }
   return t;
}

int main()
{
   srand(time(0)); 

   int n = 15;
   double* t = tworzTablice(n);
   wypiszTablice(t, n);
   cout << endl;
   system("pause");
   delete (t);
   return 0;
}
pawel_wr
Użytkownik
Użytkownik
Posty: 22
Rejestracja: 25 paź 2012, o 04:00
Płeć: Mężczyzna
Lokalizacja: wroclaw
Pomógł: 3 razy

[C++] tablice, funkcje, losowanie

Post autor: pawel_wr »

W kodzie zamieszczonym w pierwszym poście tego tematu błąd w linii 36 wynika z błędu
-> x jest liczbą int , a nie tablicą // wywołanie funkcji wypiszLiczby(x,999)
anilahcim
Użytkownik
Użytkownik
Posty: 209
Rejestracja: 13 lip 2012, o 14:32
Płeć: Kobieta
Lokalizacja: Pcim
Podziękował: 107 razy

[C++] tablice, funkcje, losowanie

Post autor: anilahcim »

Poprawiłam i chyba już jest dobrze:

Kod: Zaznacz cały

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cmath>

using namespace std;

int* wylosujLiczby(int i, int min, int max)
{
	int* t;
	t=new int[999];
	for (i=0;i<999;++i)
	t[i]=(rand()%(max-min+1))+min;
	return t;
}

void wypiszLiczby(int* t, int n)
{
	int i;
	for (i=0;i<n;++i)
	cout << t[i] << endl;
}

int obliczSume(int* t, int n)
{
	int i, suma=0;
	for(i=0;i<n;++i)
		suma += t[i];
	return suma;
}

int main()
{
	int* x;
	int suma=0;
	int p1=4, p2=10;
	x=wylosujLiczby(999, p1, p2);
	wypiszLiczby(x, 999);
	suma=obliczSume(x, 999);

	cout << "Suma wylosowanych liczb: " << suma << endl;

	system("pause");
	return 0;
}
Dziękuję za pomoc!
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[C++] tablice, funkcje, losowanie

Post autor: royas »

Przenieś jeszcze tworzenie tablicy z wylosujLiczby do main. "Tablica ma być zadeklarowana w funkcji main", a w main masz tylko wskaźnik do int. "Wypełnienie tablicy o podanym rozmiarze losowymi liczbami z przedziału podawanego przez argumenty funkcji." - wypełnianie, a nie: tworzenie i wypełnianie.
anilahcim
Użytkownik
Użytkownik
Posty: 209
Rejestracja: 13 lip 2012, o 14:32
Płeć: Kobieta
Lokalizacja: Pcim
Podziękował: 107 razy

[C++] tablice, funkcje, losowanie

Post autor: anilahcim »

Ok, dzięki! Poprawione

Kod: Zaznacz cały

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cmath>

using namespace std;

void wypiszLiczby(int* t, int n)
{
	int i;
	for (i=0;i<n;++i)
	cout << t[i] << endl;
}

int obliczSume(int* t, int n)
{
	int i, suma=0;
	for(i=0;i<n;++i)
		suma += t[i];
	return suma;
}

int main()
{
	int suma=0, i;
	int p1=4, p2=10;
	int* t;
	t=new int[999];
	for (i=0;i<999;++i)
	t[i]=(rand()%(7))+4;
	wypiszLiczby(t, 999);
	suma=obliczSume(t, 999);

	cout << "Suma wylosowanych liczb: " << suma << endl;

	system("pause");
	return 0;
}
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[C++] tablice, funkcje, losowanie

Post autor: royas »

Teraz jest gorzej. Wypełnianie tablicy masz mieć w osobnej funkcji.
ODPOWIEDZ