Suma elementów dynamicznej tablicy jednowymiarowej

0

Witam, mam problem z kodem i nie wiem dlaczego nie chce się prawidłowo wykonać. Należalo stworzyć funkcję, która obliczy sumę wartości w tablicy,
a program ma kończyć działanie, gdy podana długość kolejnej z tablic jest <=0 oraz usuwać zaalokowaną tablicę, tak by nie było wycieków pamięci.

#include <iostream>

void wprowadzrozmiar (int wymiar);
void wprowadzdane (int *tablica, int wymiar);
void zwolnijzasoby (int *tablica);
double obliczsume (int *tablica, int wymiar);

int main()
{
	int wymiar;
	wprowadzrozmiar(wymiar);
	int *tablica = new int[wymiar];
	wprowadzdane(tablica, wymiar);
	obliczsume(tablica, wymiar);
	zwolnijzasoby(tablica);
	
	return 0;
}


void wprowadzrozmiar(int wymiar)
{
	do
	{
		printf("Podaj wymiar tablicy:");
		scanf("%d", wymiar);
	} while (wymiar<=0);
	
}
void wprowadzdane (int *tablica, int wymiar)
{
	for (int i=0; i<wymiar; ++i)
	{
		printf("Podaj element nr", i);
		scanf("%d", &tablica[i]);
	}
}

double obliczsume (int *tablica, int wymiar)
{
	double suma = 0;
	for (int i=0; i<wymiar; ++i)
	{
		suma += tablica[i];
	}
	printf("Suma elementow tablicy wynosi:", suma);
}

void zwolnijzasoby (int *tablica)
{
	delete[] tablica;
}
1

Piszesz w C czy w C++?

void wprowadzrozmiar(int wymiar)
{
	do
	{
		printf("Podaj wymiar tablicy:");
		scanf("%d", wymiar);
	} while (wymiar<=0);
	
}

Poczytaj o referencjach i wskaźnikach: Przekazywanie parametru przez wartość i referencję

Ponadto: pokaż jak wygląda polecenie, bo to co masz ogólnie nie ma sensu. Masz liczyć jedną tablicę, wiele? Jeśli wiele, to dlaczego działasz tylko na jednej?

O tym, że nie używasz std::vector, tylko jakichś archaizmów to tylko wspomnę.

0

Mam napisać w C++, a całość polecenia brzmi tak:

Stwórz program zawierający:

Funkcję tworzącą tablicę dynamiczna liczb całkowitych.
Funkcję, która obliczy sumę wartości w tablicy.
Program, który w pętli będzie pytał użytkownika jak długą tablicę chcę stworzyć. Następnie za pomocą funkcji obliczy sumę wartości i ją wyświetli.
Program kończy działanie, gdy podana długość kolejnej z tablic jest <=0.
Należy pamiętać, by usuwać zaalokowaną tablicę, tak by nie było wycieków pamięci.

0

Jeśli C++ to używaj narzędzi C++ (takich jak std::vector, std::cin, std::cout).

Zadanie bez sensu zapisane, wszystkie podpunkty mówią o pojedynczej tablicy, wraz z poprawną odmianą ę, a przedostatni implikuje, że tych tablic ma być więcej.

Można się domyślać, że masz wczytać skończoną liczbę tablic o długościach zadanych przez użytkownika i wypisać sumę ich wartości dla każdej z nich. Zadanie nie mówi skąd brać dane do uzupełnienia tablic, można domniemywać generowanie ich losowo lub pobieranie od użytkownika.

0
kq napisał(a):

Zadanie bez sensu zapisane, wszystkie podpunkty mówią o pojedynczej tablicy, wraz z poprawną odmianą ę, a przedostatni implikuje, że tych tablic ma być więcej.

Jest napisane z sensem. Jedna funkcja tworzy jedna tablice zgodnie z punktem 1. Kolejna funkcja oczywiscie tez operuje na jednej tablicy. Obydwie sa wolne w petli (punkt 3) i robi sie wiele tablic.

@mw18w: Napisz w miare doslownie tak jak masz w tresci. Teraz tablice tworzysz w mainie a nie w funkcji. Nie wolasz tez w petli funkcji z punktow 1 i 2. Rzeczywiscie w zadaniu by sie przydalo skad brac dane do tablicy, ale juz sam cos zgadles (no ale wypadaloby zamienic printf/scanf na cin/cout).

0

Żyd został zaproszony do restauracji żydowskiej dzielnicy w USA. Obsługa, azjaci, bardzo dobrze mówi jidysz. Pyta się właściciela, co jest, i dlaczego oni tak dobrze mówią
"Ćśśśś, oni myślą, ze uczą się angielskiego"

1
mw18w napisał(a):
 double obliczsume (int *tablica, int wymiar)
{
	double suma = 0;
	for (int i=0; i<wymiar; ++i)
	{
		suma += tablica[i];
	}
	printf("Suma elementow tablicy wynosi:", suma);
}

oblicz to znaczy oblicz, a nie "oblicz i drukuj"
(Pominę, że to nie wykorzystuje potencjału C++, choć mnie razi)

Myśl o fukcjach, jakby miały być wykorzystywane w zupełnie innym środowisku, w aplikacji okienkowej. Taka funkcja po prostu nie miałaby gdzie drukować, albo hipotetycznie, ze na serwerze webowym. Na cholerę każdorazowy druk jakiejś liczby na konsoli serwera?

Po to są funkcje (oraz maja nazwy), aby były czyste, robiło to, i tylko to, co mają za zadanie.

Ewentualne drukowanie to na zewnątrz, w kodzie "klienckim"

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