Wątek przeniesiony 2017-12-20 13:16 z C/C++ przez ŁF.

Pseudolosowanie, funkcje

0

Witam.
Mam problem z zadaniem (patrz załącznik). Wiem jak zrobić pierwszą funkcję która generuje mi te liczby ale nie wiem jak zabrać się za następne funkcje.

0

To są naprawdę łatwe zadania, Masz tu kod, ale spróbuj to sam napisać...


#include <iostream>

using namespace std;

void print_array(int * a, unsigned size){
	cout << "[";
	for (unsigned i = 0; i < size; i++){
		cout << a[i]<<" ";
		}
		cout << "]";
	}

int sum(int * a, unsigned size){
	int s = 0;
	 for (unsigned i = 0; i < size; i++){
		 s += a[i];
		 }
		return s;
	}
int norm(int * a, unsigned size){
	int max = 1;
	for (unsigned i = 0; i < size;i++){
		if (abs(a[i]) >= max) max = abs(a[i]); 
		}
	return max;
	}

void reverse(int * a, unsigned size){
	int b [size];
	for (int i = size - 1, k = 0; i > -1, k < size ; i--, k++){
		b[k] = a[i];
		}
	 for (int i = 0; i < size;i++)
		a[i] = b[i];
	}

int main(){
	int a[] = {1, -10, 3, 4};
	print_array(a, sizeof(a) / sizeof(a[0])); cout << endl;
	cout << sum(a, sizeof(a) / sizeof(a[0]))<<endl;
	cout << norm(a, sizeof(a) / sizeof(a[0]))<<endl;
	reverse(a, sizeof(a) / sizeof(a[0]));
	print_array(a, sizeof(a) / sizeof(a[0])); cout << endl;
	 
return 0;
}
0

Dziękuję za kod ale wolałbym zamiast kodu zostać nakierowany jak to zrobić. Nie chcę kopiować kogoś kodu bo wtedy nie będzie to moja praca tylko osoby która napisała kod więc jeżeli można proszę o nakierowanie mnie jak to zrobić.

0

Drukowanie, chyba nie wymaga komentarza, zresztą Możesz to ulepszyć, żeby nie było tej spacji na końcu.

Suma:
Chwilowa wartość s=0 i w pętli dodajemy elemnety s += s[indeks], s += 1 czyli s = s + 1

Max:
Podobnie, chwilowe maksimum, równe dowolnej liczbie i w pętli je aktualizujemy, jeśli element większy i na końcu zwracamy; z minimum byłby problem, gdy nie wiemy jakie liczby poda user, ale w C++, wartości nie są nieograniczone, więc można zacząć od minimalnej wartości dla int czy whatever. Tam Masz maksimum po normach, ale norma z liczby, to po prostu jej wartość bezwzględna (nie skopiowała mi sie funkcja, ale napisanie funkcji abs chyba nie sprawi Ci problemu)

Odwracanie tablicy:
Po prostu, chwilowa tablica, i wpisuję do niej elementy starej, w odwrotnej kolejności, iterując dwoma indeksami, jeden od końca, drugi od początku, potem trzeba tylko przepisać do wejściowej tablicy. Po co przepisanie? Tablicy utworzonej na stosie nie można zwrócić, znaczy, można by było gdyby była statyczna, ale wtedy kompilator chce znać rozmiar, a tego nie mamy (nie wiemy jaką wyśle user).

Rozmiar tablicy: Rozmiar trzeba obliczyć wcześniej, gdyż przekazujemy tylko pointer a nie tablicę, więc w funkcji sie go obliczyć nie da(rozmiar całej tablicy to będzie w funkcji rozmiar wskaźnika), a będzie to: rozmiar całej tablicy / rozmiar pojedynczego elementu.

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