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

Wprowadzanie elementów do tablicy poprzez funkcję i operacje na wartościach

Object Storage Arubacloud
+1 głos
154 wizyt
pytanie zadane 11 września 2016 w C i C++ przez sharkus101 Początkujący (330 p.)
edycja 11 września 2016 przez Eryk Andrzejewski

Cześć, mam pytanie odnośnie tego w jaki sposób w mainie "dobrać się" do elementów z tablicy w takim kodzie

int wprowadzdane(string dni[7], string imie) {
int ilekasy[7];
int caly=0;

	for (int i=0; i<7; i++)
		{
			cout<<imie<<" zebral w "<<dni[i]<<":? wprowadz liczbe "<<endl;
			cin>>ilekasy[i];
			cout<<endl;
			caly=ilekasy[i]+caly;
			cout<<"lacznie jest "<<caly<<endl;
	}

}

int main () 
{

    string dni[7] {
            "poniedzialek",
            "wtorek",
            "sroda",
            "czwaretek",
            "piatek",
            "sobota",
            "poniedzialek",
       };
string adam = "adam";
string kuba = "kuba";

wprowadzdane (dni, adam);
wprowadzdane (dni, kuba);

program ma liczyć oszczędności jak widać dwóch osób i za nic w świecie nie moge sobie poradzić z wyświetleniem jakiejkolwiek zmiennej z tablicy np. ilość kasy adama w poniedziałek. Nie wiem jak taką wartość wywołać.

Pomoże ktoś?

1 odpowiedź

+2 głosów
odpowiedź 12 września 2016 przez BlackMoon Obywatel (1,730 p.)
wybrane 12 września 2016 przez sharkus101
 
Najlepsza

Po pierwsze mały błąd w dniach tygodnia. Brakuje niedzieli, a w czwartku jest literówka.

Przechodząc do kodu:

Widzę, że dopiero zacząłeś pracować z funkcjami gdyż zauważyłem parę podstawowych błędów laugh. Wszystkie stringi zadeklarowane są poprawnie, wywołanie twojej funkcji "wprowadzdane" w int main() również jest dobre.

Problem pojawia się, gdyż zapisałeś swoją funkcję jako typ int (int wprowadzdane), a skoro to zrobiłeś, to twoja funkcja MUSI zwrócić jakąś konkretną wartość (dla int wprowadzdane() byłaby to liczba całkowita, dla float wprowadzdane() byłaby to liczba zmiennoprzecinkowa). O typach zmiennych możesz dowiedzieć się więcej tutaj: 

http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/Pojecie-zmiennej-i-podstawowe-typy-danych/11

Skoro zadeklarowałeś ją jako int, musiałbyś użyć słowa "return" i następnie podać co twoja funkcja ma "oddać" programowi. Np. jeśli chciałbyś aby twój program oddał Ci końcową wartość "caly", po wszystkich siedmiu dniach zapisałbyś to następująco:

int wprowadzdane(string dni[7], string imie)
{
	int ilekasy[7];
	int caly = 0;

	for (int i = 0; i<7; ++i)
	{
		cin >> ilekasy[i];
		caly = ilekasy[i] + caly;
	}
	return caly;
}

Po wywołaniu funkcji wprowadzdane() otrzymałbyś wartość "caly". Mógłbyś to sprawdzić w następujący sposób:

cout<< wprowadzdane(string dni[7], string imie);

Ale wracając do sedna problemu, jeśli chcesz, aby twoja funkcja była odpowiedzialna za wprowadzanie danych, albo wywoływanie jakiegoś tekstu to najlepiej jest użyć typu funkcji void (void wprowadzdane()). Ten typ funkcji nie wymaga, słowa kluczowego return, czyli funkcja pokaże int main() co w sobie ma i to wykona - mówiąc banalnie.

O wiele lepiej wyjaśnisz to sobie oglądając materiał Pana Mirosława Zelenta:

https://www.youtube.com/watch?v=HHplT1A4_A4&index=9&list=PLJH_V2agrmShGF7wFvaB-FfS_JDkhTgAr

Są tu wszystkie potrzebne informacje na temat rodzajów funkcji w c++.

Mam nadzieję, że pomogłem wink

komentarz 12 września 2016 przez BlackMoon Obywatel (1,730 p.)

W dalszych etapach nauki polecam również dowiedzieć się o wskaźnikach. Pozwolą Ci pracować na oryginalnych wartościach w funkcji, i dynamicznie alokować tablice. Wiem, że brzmi skomplikowanie, ale ja zaczynałem naukę niedawno, a powoli zaczynam to rozumieć. Wskaźniki naprawdę ulepszają twój program, m.in zmniejszają wykorzystanie pamięci RAM.

Miłej nauki wink

komentarz 12 września 2016 przez Avernis Nałogowiec (27,400 p.)
Dla początkujących lepsze są referencje niż wskaźniki. Na pewno łatwiej się je obsługuje
komentarz 12 września 2016 przez sharkus101 Początkujący (330 p.)
Dzięki wielkie za wyczerpującą odpowiedź, zabieram się do pracy.

Podobne pytania

0 głosów
1 odpowiedź 138 wizyt
pytanie zadane 5 listopada 2018 w C i C++ przez KuS018 Nowicjusz (180 p.)
0 głosów
1 odpowiedź 598 wizyt
pytanie zadane 20 listopada 2016 w C i C++ przez Jaroslaw Goc Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 177 wizyt

92,584 zapytań

141,434 odpowiedzi

319,671 komentarzy

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

...