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

question-closed C++ operator new tablice dynamiczne funkcje

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
107 wizyt
pytanie zadane 24 lutego 2021 w C i C++ przez MrChick888 Obywatel (1,020 p.)
zamknięte 24 lutego 2021 przez MrChick888

Witam mam takie zadanie:

treść

Napisz program, w którym w funkcji main zostaną stworzone (operatorem new) trzy tablice typu double o identycznych rozmiarach (co najmniej 20 elementów). Elementy pierwszych dwóch tablic załaduj jakimiś wartościami. W programie powinna być funkcja, która przyjmie wysłane do niej te trzy tablice. Funkcja ta ma na elementach tych tablic wykonać operację mnożenia – taką, że i-ty element tablicy pierwszej zostanie pomnożony przez i-ty element tablicy drugiej. Rezultat ma zostać wpisany do i-tego elementu tablicy trzeciej. W funkcji main wypisz na ekranie zawartość poszczególnych elementów tablicy pierwszej, drugiej i trzeciej, a następnie skasuj te tablice.

Napisałem taki program: (bardzo chce to zrobić przekazując do funkcji wskaźniki)

#include <iostream> 

using namespace std;

void mnoznie(const double* w1, const double* w2, double* w3);
void wypisz(const double* w);
constexpr int rozmiar{ 20 };

int main()
{
	double* wsk_1 = new double[rozmiar]{ 1,2,3,4,5,6,7,8,9,10,11 };
	double* wsk_2 = new double[rozmiar]{ 2,4,6,8,10,12,14,16,18,20,22,24,26,28,30 };
	double* wsk_3 = new double[rozmiar];
	mnoznie(wsk_1, wsk_2, wsk_3);
	wypisz(wsk_1);
	cout << endl;
	wypisz(wsk_2);
	cout << endl;
	wypisz(wsk_3);
	delete[] wsk_1;
	delete[] wsk_2;
	delete[] wsk_3;
	system("PAUSE");
}
void mnoznie(const double* w1, const double* w2, double* w3)
{
	for (int i = 0; i < rozmiar; i++,w1++,w2++,w3++)
	{
		*w3 = (*w1) * (*w2);
	}
}
void wypisz(const double* w)
{
	for (int i = 0; i < rozmiar; i++)
	{
		cout << *w << " ";
	}
}

lecz wyniki to w pierwszej tablicy same 1
w drugiej same 2
w trzeciej same 2
nie wiem gdzie jest bład ktoś umie mi go wskazać

////////

Tak wiem ze moze to rozwiazać poprzez przekazywanie tablic do funkcji jestem ciekawy czy da się tak jak ja chcaiłem zrobić

na pewno dobry sposób

#include <iostream>
using namespace std;
void funkcja( double t1[ ], double t2[ ], double t3[ ], int rozmiar)
{
	for(int i = 0 ; i < rozmiar ; ++i)
	{ t3[i] = t1[i] * t2[i]; }
}
int main(){
	int rozmiar = 25 ;
	auto *tab1 = new double[rozmiar];
	auto *tab2 = new double[25];
	auto *tab3 = new double[25];
	for(int i = 0 ; i < rozmiar; ++i) {
		tab1[i] = i;
		tab2[i] = 2;
	}
	funkcja(tab1, tab2, tab3, rozmiar);
	for(int i = 0 ; i < rozmiar ; ++i)
		cout << "tab3[ " << i << "] = " << tab3[i] <<  endl;
	delete [] tab1;
	delete [] tab2;
	delete [] tab3;
}  	

 

komentarz zamknięcia: rozwiązane

1 odpowiedź

+1 głos
odpowiedź 24 lutego 2021 przez tangarr VIP (140,920 p.)
wybrane 24 lutego 2021 przez MrChick888
 
Najlepsza

Spójrz spokojnie na funkcję wypisz.
Czy zmienna w jest w jakiś sposób powiązana ze zmienną i? Nie. W każdej iteracji pętli używasz pierwszego elementu tablicy.
Aby dostać się do n-tego elementu tablicy musisz przesunąć wskaźnik o n miejsc.

cout << *(w+n);

lub jeszcze lepiej (bardziej czytelnie): użyj operatora indeksowania

cout << w[n];

Analogicznie dla funkcji mnożenie.

komentarz 24 lutego 2021 przez MrChick888 Obywatel (1,020 p.)
Dziękuje kompletnie nie zauważyłem ze w funkcji wypisz w pętli for nie zapisałem po i++, "w++". Szukałem błędu głównie w funkcji mnożenie. Dzięki za pomoc.

Podobne pytania

0 głosów
1 odpowiedź 166 wizyt
pytanie zadane 5 lutego 2020 w C i C++ przez niezalogowany
0 głosów
3 odpowiedzi 2,016 wizyt
pytanie zadane 21 września 2017 w C i C++ przez Ziom Początkujący (430 p.)
0 głosów
3 odpowiedzi 290 wizyt
pytanie zadane 4 sierpnia 2015 w C i C++ przez 0xf Dyskutant (8,190 p.)

89,777 zapytań

138,385 odpowiedzi

309,501 komentarzy

59,681 pasjonatów

Advent of Code 2022

Top 15 użytkowników

  1. 1088p. - Argeento
  2. 1032p. - nidomika
  3. 1024p. - rucin93
  4. 1020p. - Michal Drewniak
  5. 1014p. - Łukasz Eckert
  6. 1006p. - Mikbac
  7. 988p. - TheLukaszNs
  8. 963p. - JMazurkiewicz
  9. 960p. - adrian17
  10. 945p. - Jarosław Roszyk
  11. 941p. - Hubert Chęciński
  12. 920p. - Mawrok
  13. 914p. - overcq
  14. 859p. - ssynowiec
  15. 848p. - Adam Salamon
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...