Problém s úkolem c++ – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problém s úkolem c++ – C / C++ – Fórum – Programujte.comProblém s úkolem c++ – C / C++ – Fórum – Programujte.com

 
Hledat
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Pergoly a střechy Brno

Michal
~ Anonymní uživatel
666 příspěvků
24. 1. 2018   #1
-
0
-

Zdravím,

Ve škole jsme dostali úkol:

1. Vytvořte složený datový typ s názvem klient, který bude obsahovat: číslo ID, řetězec s názvem jméno, řetezec s názvem požadavek a přepínač TRUE/FALSE s názvem vyřízeno.                                                     2. Vytvořte DT pole klientů s názvem čekárna (velikost 10), vytvořte proměnnou tohoto DT  s názvem hala. 
3. Vytvořte funkci init, která bude mít vstupní parametr pole klientů, tento parametr bude zapisovatelný. Funkce naplní všechny položky v poli výchozími hodnotami (id bude druhá mocnina indexu pole), jméno bude: Franta, požadavek bude NIC, přepínač bude na false.                                                                                          4. Vytvořte funkci vypiš pole, která bude mít vstupní parametr pole klientů a vypíše celé pole .                            5. na 5 pozici v čekárně zapište: Aneta, kafe a true.                                                                                              6. Zavolejte v main: funkci init, zápis Anety a vypište pomocí funkce celé pole. 

Jen podotýkám, že jsme se ještě vůbec neučili pointery ani reference. Bylo nám pouze řečeno, že pokud chceme zapisovat ve funkci musíme použít &. Mohl by mi to někdo lépe objasnit ? Jaká část programování se tímto zabývá ? Dále přikládám svůj kod. Mělo by to být dobře. Kromě bodů 4 a 5 s těmi si nevím rady. 

KÓD:

#include <iostream>

using namespace std;

struct klient{
int ID;
string jmeno;
string pozadavek;
bool vyrizeno;

};
const int VEL=10;
typedef klient cekarna[VEL];
cekarna hala;

void init(cekarna&vstup){
for(int x=0;x<=VEL;x++){
    vstup[x].ID=x*x;
    vstup[x].jmeno="Franta";
    vstup[x].pozadavek="nic";
    vstup[x].vyrizeno=false;
}
}

/*co tady

void vypisPole(cekarna&vstup){
for(int x=0;x+<=VEL;x++){

}

}

*/

int main()
{
    init(hala);
vypisPole(hala);
}

Díky za pomoc. 

Nahlásit jako SPAM
IP: 82.99.180.–
gna
~ Anonymní uživatel
1498 příspěvků
24. 1. 2018   #2
-
0
-

Parametry se předávájí hodnotou nebo odkazem.

Bez & se předávájí hodnotou. Při volání funkce se vytvoří dočasná kopie parametru a na konci funkce se zase zruší. Pokud funkce parametr mění, tak mění tu kopii, která se ztratí.

S & se předávájí odkazem. Funkce dostává odkaz na proměnnou a když ji mění, tak mění odkazovanou proměnnou.

void vypisPole(cekarna &vstup) {
	for(int x = 0; x < VEL; x++) {
		cout
			<< "id: " << vstup[x].ID
			<< ", jmeno: " << vstup[x].jmeno
			<< ", pozadavek: " << vstup[x].pozadavek
			<< ", vyrizeno: " << vstup[x].vyrizeno
			<< endl;
	}
}
hala[4].jmeno = "Aneta";
Nahlásit jako SPAM
IP: 213.211.51.–
Michal
~ Anonymní uživatel
666 příspěvků
24. 1. 2018   #3
-
0
-

#2 gna
Nefunguje to. To vypsání mi funguje pouze v té funkci init. Pokud to chci ale vypsat v jiné funkci, tak jak jste napsal, tak to nevypíše nic. Nevím. Možná mám chybu v main. 

Funguje

void init(cekarna&vstup){
for(int x=0;x<=VEL;x++){
    vstup[x].ID=x*x;
    vstup[x].jmeno="Franta";
    vstup[x].pozadavek="nic";
    vstup[x].vyrizeno=false;
    cout<<vstup[x].ID<<endl;
    cout<<vstup[x].jmeno<<endl;
    cout<<vstup[x].pozadavek<<endl;
    cout<<vstup[x].vyrizeno<<endl;
    cout<<endl;
}
}

Nefunguje

void init(cekarna&vstup){
for(int x=0;x<=VEL;x++){
    vstup[x].ID=x*x;
    vstup[x].jmeno="Franta";
    vstup[x].pozadavek="nic";
    vstup[x].vyrizeno=false;
}
}

void vypisPole(cekarna &vstup) {
	for(int x = 0; x < VEL; x++) {
		cout
			<< "id: " << vstup[x].ID
			<< ", jmeno: " << vstup[x].jmeno
			<< ", pozadavek: " << vstup[x].pozadavek
			<< ", vyrizeno: " << vstup[x].vyrizeno
			<< endl;
	}
}
Nahlásit jako SPAM
IP: 82.99.180.–
gna
~ Anonymní uživatel
1498 příspěvků
24. 1. 2018   #4
-
0
-

   

x<=VEL

Jinak tam nic nevidím.

Nahlásit jako SPAM
IP: 213.211.51.–
Michal
~ Anonymní uživatel
666 příspěvků
24. 1. 2018   #5
-
0
-

Tak si zkopíruj tohle do kompilátoru. Nefunguje. to = na to žádný vliv mít nebude. I když jsem ho teď spravil. 

#include <iostream>
using namespace std;

struct klient{
int ID;
string jmeno;
string pozadavek;
bool vyrizeno;

};
const int VEL=10;
typedef klient cekarna[VEL];
cekarna hala;

void init(cekarna&vstup){
for(int x=0;x<=VEL;x++){
    vstup[x].ID=x*x;
    vstup[x].jmeno="Franta";
    vstup[x].pozadavek="nic";
    vstup[x].vyrizeno=false;
}

}

void vypisPole(cekarna &vstup) {
	for(int x = 0; x <= VEL; x++) {
		cout
			<< "id: " << vstup[x].ID
			<< ", jmeno: " << vstup[x].jmeno
			<< ", pozadavek: " << vstup[x].pozadavek
			<< ", vyrizeno: " << vstup[x].vyrizeno
			<< endl;
	}
	
}


int main()
{

hala[4].jmeno = "Aneta";
hala[4].pozadavek="kafe";
hala[4].vyrizeno=true;


init(hala);
vypisPole(hala); 

}
Nahlásit jako SPAM
IP: 82.99.180.–
gna
~ Anonymní uživatel
1498 příspěvků
24. 1. 2018   #6
-
0
-

Jasně, já ti to budu ještě ladit. To porovnání jsi nespravil, ale posral.

Před chvílí jsem na rootu viděl, jak jsi za 2 hodiny nic nevymyslel, takže nasrat.

Nahlásit jako SPAM
IP: 213.211.51.–
MilanL+1
Expert
26. 1. 2018   #7
-
0
-

#5 Michal
1) pole indexována od 0, X<=VEL tě posune mimo pole

2) v mainu špatné pořadí

Nahlásit jako SPAM
IP: 91.139.9.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 19 hostů

Podobná vlákna

Problém s úkolem c++ — založil Michal

Problém s úkolem z VUT — založil Vlastimil Krška

Problém s úkolem o cenzuře — založil RobinHood

Pomoc s ukolem — založil Janickaaa1919

Pomoc s úkolem — založil Honza

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032021 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý