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

Dynamiczna alokacja pamięci_najwiekszy i najmniejszy element tablicy_średnia arytmetyczna c++

Object Storage Arubacloud
0 głosów
336 wizyt
pytanie zadane 3 grudnia 2018 w C i C++ przez eSpring Początkujący (270 p.)

Witam, mam problem z dynamiczną alokacją pamięci. Dostałem zadanko o treści:

Napisać program, który dynamicznie tworzy tablicę liczb całkowitych o rozmiarze podanym przez użytkownika.
Program następnie wczytuje od użytkownika po kolei wszystkie elementy tablicy. Za pomocą funkcji arr_min_max() oraz arr_avg program oblicza minimalny, maksymalny element tablicy i ich średnią po czym wypisuje je na standardowe wyjście.

#include <iostream>
double arr_avg(int* tab, std::size_t n);
void arr_min_max(int* tab, std::size_t n, int* min_elem, int* max_elem);

double arr_avg(int* tab, std::size_t n) {

	double sum = 0;

	for (int i = 0; i < n; i++)
	{
		sum += *tab;
		std::cout << *tab << '\n';
		tab++;
	}
	return sum / n;
}

void arr_min_max(int* tab, std::size_t n, int* min_elem, int* max_elem)
{
	*min_elem = std::numeric_limits<int>::max();
	*max_elem = std::numeric_limits<int>::min();

	for (int i = 0; i < n; i++)
	{
		if (tab[i] < *min_elem)
			*min_elem = tab[i];
		if (tab[i] > *max_elem)
			*max_elem = tab[i];
	}
}

int main()
{
	int ile;
	int* tab;
	tab = new int[ile];
	int *p = tab;
	

	std::cout << "Podaj wielkosc tablicy jednowymiarowej: ";
	std::cin >> ile;

	for (int i = 0; i < ile; i++)
	{
		std::cout << " Podaj element[" << i << "]=";
		std::cin >> *p++;
		std::cout << '\n';
		
	}

	delete[] tab;
	
	return 0;
}

Przesyłam to co udało mi się osiągnąć. Proszę o pomoc jak zrobić to zadanie! Z góry dziękuje !

komentarz 4 grudnia 2018 przez criss Mędrzec (172,590 p.)
Przecież wszystko już masz zrobione. Czego ci jeszcze brakuje?

1 odpowiedź

0 głosów
odpowiedź 4 grudnia 2018 przez Bondrusiek Maniak (61,370 p.)

Witam,

w funkcji void arr_min_max(int* tab, std::size_t n, int* min_elem, int* max_elem) popraw wartości początkowe dla wartości minimalnej oraz maksymalnej. W Twoim przykładzie podałeś wartości minimalne/maksymalne dla typu int a powinieneś odwoływać się tylko do swojej tablicy. Rozsądnym rozwiązaniem jest przypisanie tych wartości dla zerowego elementu tablicy. Przechodząc przez tablicę możesz w razie czego podmienić te wartości

...
    *min_elem = tab;
    *max_elem = tab;
...

Następnie w funkcji main po pętli i przypisaniu wartości do tablicy możesz wreszcie obliczyć żądane wartości

    int max, min;
    arr_min_max(tab,ile, &min, &max);
    std::cout << "Sredni arytmetyczna to " << arr_avg(tab, ile) << ". Najwiekszy element " << max << " . Najmniejszy element " << min << std::endl;

 

Podobne pytania

0 głosów
2 odpowiedzi 780 wizyt
0 głosów
2 odpowiedzi 830 wizyt
0 głosów
1 odpowiedź 431 wizyt
pytanie zadane 7 maja 2020 w C i C++ przez Hubertius Bywalec (2,970 p.)

92,565 zapytań

141,416 odpowiedzi

319,598 komentarzy

61,950 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!

...