Struktura jako návratová hodnota funkce – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Struktura jako návratová hodnota funkce – C / C++ – Fórum – Programujte.comStruktura jako návratová hodnota funkce – C / C++ – Fórum – Programujte.com

 

Petr
~ Anonymní uživatel
746 příspěvků
23. 7. 2013   #1
-
0
-

Zdravím, zkouším teď tu jeden příklad v c++, ale nevím si s ním rady. Zadání vypadá takto:

Funkce má jako argument textový řetězec. Funkce vrací strukturu, která obsahuje: délku textového řetězce, počet číslic v tex. řetězci, počet písmen v tex. řetězci.

1.Program vyžádá od uživatele tex. řetězec bez mezer

2.Získá návratovou hodnotu funkce

3.Vypíše informaci o řetězci, obsaženou v návratové hodnotě funkce.

Lámu si hlavu nad tím, jak mam vrátit tu strukturu...dokážu vrátit třeba pouze to, kolik je obsaženo číslic v tom řetězci...

int funkce(string text){

int delka=text.size();
int p=0;

for(int i=0; i<delka; i++){
if(isdigit(text[i])) p++;
}
return p;
}

ALE dál nevím, jak mam vrátit všechny potřebné údaje...Díky předem za pomoc :)

Nahlásit jako SPAM
IP: 77.48.182.–
TheOndrap+2
Super člen
23. 7. 2013   #2
-
0
-

Ahoj .. co je struktura víš? pokud ano, tak si nadeklaruj strukturu tak, jak je požadovaná. Co je funkce určo taky víš a fuknce stejně tak, jako vrací int, char, double atd, tak umí vrátit i ukazatel na strukturu 

Dokonce tady na Programujte.com je ukazka : http://programujte.com/clanek/2005041411-c-7-lekce/

Nahlásit jako SPAM
IP: 88.102.250.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
Robo
~ Anonymní uživatel
82 příspěvků
23. 7. 2013   #3
-
0
-

#1 Petr
Presne tak, štruktúra sa vracia ako obyčajný dátový typ. Vo funkcii si vytvoríš štruktúru a nakoniec ju pomocou return vrátiš inej štruktúre vo funkcii main

#include <iostream>
#include <cctype>

const int MAX = 100;

struct P{
	int dlzka;
	int pCislic;
	int pZnakov;
};

P funkcia(char *); //pozadovana funkcia

int main(){

	//spristupnenie potrebnych prikazov std
	using std::cout;
	using std::cin;

	char retazec[MAX];
	P struktura;
	
	cout << "Zadajte retazec bez medzier: ";
	cin.getline(retazec, MAX);
	
	// struktura prebera udaje vratene z funkcie
	struktura = funkcia(retazec);

	cout << "Retazec: " << retazec << "\nMa " << struktura.dlzka << " znakov, ztoho " << struktura.pCislic << " cisiel a " << struktura.pZnakov << " znakov\n";

	system("PAUSE");
}

P funkcia(char * r){
	//deklaracia + inicializacia struktury
	P temp = {0, 0, 0};
	
	for(int i = 0; i < MAX && r[i] != '\0'; i++){
		if(isdigit(r[i]))
			temp.pCislic++;
		else if(isalpha(r[i]))
			temp.pZnakov++;

		temp.dlzka++;
	}

	return temp;
}
Nahlásit jako SPAM
IP: 178.253.156.–
Petr
~ Anonymní uživatel
746 příspěvků
23. 7. 2013   #4
-
0
-

Díky moc, už to mám ;)

Nahlásit jako SPAM
IP: 46.13.190.–
Petr
~ Anonymní uživatel
746 příspěvků
23. 7. 2013   #5
-
0
-

Pak tu mám ještě jeden příklad, jestli můžu: Funkce má jako argument strukturu, která obsahuje koeficienty A, B, C kvadratické rovnice. Má-li rovnice v oboru reálných čísel řešení, vrací funkce hodnotu 1, jinak vrací hodnotu 0.

1.Program vyžádá od uživatele hodnoty koeficientů A, B, C a uloží je do struktury

2.Získá návratovou hodnotu funkce

3.Dle návratové hodnoty funkce vypíše informaci o řešitelnosti rovnice.

Ukázka: A: 1,0  B: 2,0 C: -3,0   Ma řešení

-----------------------------------------------

Jak se ve funkci vypočítá kvadr. rovnice vím a umím, ale abych řekl pravdu, tak jsem moc nepochopil zadání.... Mohl by mi to prosím někdo nějak podrobněji vysvětlit, co po mě přesně chtějí? Díky


Nahlásit jako SPAM
IP: 77.48.182.–
KIIV
~ Moderátor
+43
God of flame
23. 7. 2013   #6
-
0
-

#5 Petr
funkce ma vratit 1 nebo 0 v zavislosti na tom jestli kvadraticka rovnice ma ci nema reseni v realnych cislech.

Nic jinyho tam nepotrebujes.

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Petr
~ Anonymní uživatel
746 příspěvků
23. 7. 2013   #7
-
0
-

#6 KIIV
Mně jde hlavně o to uložení do struktury...

Nahlásit jako SPAM
IP: 77.48.182.–
KIIV
~ Moderátor
+43
God of flame
23. 7. 2013   #8
-
0
-

ve strukture mas koeficienty a,b,c a je k nim plny pristup pomoci teckove notace ... jako normalni promenne.. jen se to te funkci preda jako jedna promenna vse najednou

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Petr
~ Anonymní uživatel
746 příspěvků
23. 7. 2013   #9
-
0
-

#8 KIIV
Mně to furt nejde :( Nevím, jak to mám přesně udělat, vždy mi to hází nějakou chybu...

Nahlásit jako SPAM
IP: 46.13.190.–
KIIV
~ Moderátor
+43
God of flame
23. 7. 2013   #10
-
0
-

co hodit kod? mimo to kompilator nikdy nevraci  "nejaka chyba", ale vetsinou naprosto presne co mu vadi...

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Petr
~ Anonymní uživatel
746 příspěvků
23. 7. 2013   #11
-
0
-

Já to mám hlavně určitě totálně špatně, protože opravdu nevím, jak to udělat s tou strukturou...

STRUKTURA.H

#ifndef __struktura_h__
#define __struktura_h__

struct rovnice{
int a;
int b;
int c;
};

#endif

FUNKCE.H

#ifndef __funkce_h__
#define __funkce_h__
#include "struktura.h"

int reseni(rovnice);

#endif

FUNKCE.CPP

#include "funkce.h"
#include "struktura.h"
#include <iostream>
using namespace std;

int reseni(rovnice){
    rovnice p={0, 0, 0};
     double diskriminant;
     diskriminant = (p.b*p.b)-(4*p.a*p.c);
     if (diskriminant < 0) return 0;
     else return 1;
}

MAIN.CPP

#include "struktura.h"
#include "funkce.h"
#include <iostream>
using namespace std;


int main(){
    rovnice t;
    cout<<"Zadejte prosim hodnoty a, b, c oddelene mezerami: ";
    cin>>t.a;
    cin>>t.b;
    cin>>t.c;
    cout << reseni(rovnice);
    

cin.get();
return 0;
}

------

ERROR: C2275: 'rovnice' : illegal use of this type as an expession

Nahlásit jako SPAM
IP: 46.13.190.–
KIIV
~ Moderátor
+43
God of flame
23. 7. 2013   #12
-
0
-

zaprve kdyz ve funkci reseni mas    int reseni(rovnice)  tak ten predany parametr nemuzes nijak pouzit protoze si nerekl, jak se jmenuje... tim spis je nesmyslne pak uvnitr vytvorit uplne jinou strukturu typu rovnice jeste se vsema parametrama 0... (krom toho ze to uz neni ani kvadraticka rovnice... dokonce ani linearni)

dale vubec nechapes predavani parametru funkci... mas ji predat nejakou promennou ne datovy typ

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Robo
~ Anonymní uživatel
82 příspěvků
23. 7. 2013   #13
-
0
-

Prototypy sa zvyknú písať spolu s definíciami (.h)

Nahlásit jako SPAM
IP: 178.253.156.–
Robo
~ Anonymní uživatel
82 příspěvků
23. 7. 2013   #14
-
0
-

*myslel som deklaráciu nie definíciu

Nahlásit jako SPAM
IP: 178.253.156.–
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, 10 hostů

Podobná vlákna

Návratová hodnota — založil Luckaa

Návratová hodnota — založil RePRO

Delegát - návratová hodnota — založil Kubas129

Moderátoři diskuze

 

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