• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wskaźniki z tablicami i odwracanie tablic

Object Storage Arubacloud
0 głosów
163 wizyt
pytanie zadane 2 grudnia 2018 w C i C++ przez tomekrx Nowicjusz (160 p.)

Witam, 
mam problem z pewnym "prostym" programem, natomiast dostałem w szkole do napisania program w którym za pomocą funkcji z wskaźnikiem "int *f(int rozmiar, int *tab)" użytkownik wpisuje liczbę, która jest rozmiarem tablicy i program losuje losowe liczby które zostają wpisywane do tablicy a następnie wyświetlane w konsoli. I tutaj zaczyna się mój problem napisałem prostą funkcje: 
 

int *f(int rozmiar, int *tab) {
tab = new int[rozmiar];
for (int i = 0; i < rozmiar - 1; i++) {
tab = rand() % 100 + 1;
}
return tab;
}


Tylko nie wiem jak ją wywołać, bo samo 
 

int m;
cin >> m;
cout << f(m, n);


nie działa, ale nie widzę sensu wpisywania do tego zmiennej n, gdyż "robi" się ona za pomocą zmiennej m.
Dodam, że jeżeli umieszczę taki wpis bezpośrednio do main'a to program się odpali i działa dobrze. Póki co to jedyna rzecz z którą mam problem, wydaje mi się, że jeżeli to ogarnę to z odwróceniem funkcji nie będzie problemu.

1 odpowiedź

0 głosów
odpowiedź 2 grudnia 2018 przez RafalS VIP (122,820 p.)

W obecnej wersji przekazanie int* tab nie ma najmniejszego sensu. A tutaj:

tab = rand() % 100 + 1;

przypisujesz inta do tablicy intow, co tez za bardzo sensu nie ma.

Petla do rozmiar-1 tez nie ma sensu, bo masz znak mniejszosci, wiec petla for wygeneruje od 0 do rozmiar-1 dla i<rozmiar.

Zrób to tak:

int *f(int rozmiar) {
	int *tab = new int[rozmiar];
	for (int i = 0; i < rozmiar; i++) {
		tab[i] = rand() % 100 + 1;
	}
	return tab;
}

int main() {
	int n;
	cin >> n;
	int *tab = f(n);
	for (size_t i = 0; i < n; i++){
		cout << tab[i] << " ";
	}
}

 

komentarz 2 grudnia 2018 przez tomekrx Nowicjusz (160 p.)
int *f(int rozmiar, int *tab) {
	tab = new int[rozmiar];
	srand(time(NULL));
	for (int i = 0; i < rozmiar; i++) {
		tab[i] = rand() % 100 + 1;
		cout << tab[i] << endl;
	}
	return tab;
}
int main()
{
	int m;
	cout << "Wpisz rozmiar tablicy i ilość elementow znajdujacych sie w niej: ";
	cin >> m;
	f(m, 0);


}

Wykładowca się uparł, że musi być int *tab, więc zrobiłem tak i działa, tylko, że pojawia się problem gdy trzeba odwrócić tą tablice i znalazłem funkcje: 

void reverse(int *tab1, int rozmiar1)
{
	int temp;
	for (int i = 0; i < rozmiar1 / 2; i++)
	{
		tab1[rozmiar1 - i - 1] = tab1[i];
		temp = tab1[rozmiar1 - i - 1];
		tab1[i] = temp;
		cout << tab1[i];
	}
}

która odwraca tablice, tylko nie wiem jak ją uruchomić w tym programie, reverse(0,m); nie działa

Podobne pytania

–1 głos
1 odpowiedź 95 wizyt
pytanie zadane 18 grudnia 2018 w C i C++ przez pysiek Początkujący (280 p.)
0 głosów
1 odpowiedź 1,070 wizyt
0 głosów
4 odpowiedzi 1,138 wizyt
pytanie zadane 29 grudnia 2016 w C i C++ przez Sinnley Stary wyjadacz (12,810 p.)

92,572 zapytań

141,422 odpowiedzi

319,644 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...