Anonymní profil Robo – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Robo – Programujte.comAnonymní profil Robo – Programujte.com

 

Příspěvky odeslané z IP adresy 178.253.156.–

Robo
C / C++ › Struktura jako návratová hod…
23. 7. 2013   #179485

*myslel som deklaráciu nie definíciu

Robo
C / C++ › Struktura jako návratová hod…
23. 7. 2013   #179484

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

Robo
C / C++ › Struktura jako návratová hod…
23. 7. 2013   #179465

#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;
}
Robo
C / C++ › Ošetření vstupu
22. 7. 2013   #179361

Ja len doplním, že je dobré ešte vyčistiť buffer (napríklad cyklom while)

Robo
C / C++ › Mistrovství v C++ (2 priklad…
22. 7. 2013   #179358

#4 kloss
Hej, v tom prvom príklade to veľké patrony stačí dať pred cyklus a tak isto aj patrony. Je jedno či bude niekto nad 10000 alebo nie, aj tak sa to má vypísať.
A k tomu druhému, ano, má tam byť count. Totiž ja som na načítanie prvého čísla používal príklaz inFile (to isté ako cin), kde mi to načítalo síce prvé číslo, ale neprešlo na druhý riadok, kedže cin znak nového riadku preskakuje. Takže keď som hľadal chybu, tak som si na miesto count zvolil pevné číslo, ale potom som to zabudol vrátiť späť :D 

Robo
C / C++ › Mistrovství v C++ (2 priklad…
20. 7. 2013   #179332

Nudil som sa, tak tu ho máš aj stou úpravou, čo si chcel v prvom príklade

#include <iostream>
#include <fstream>
#include <cstdio>

using namespace std;

struct prispievatelia{
	char meno[20];
	double prispevok;
};

int main()
{
	ifstream inFile;
	char file[20];

	cout << "Zadajte meno suboru: ";
	cin.getline(file, 20);

	inFile.open(file);
	if(!inFile.is_open()){
		cout << "Nepodarilo sa otvorit subor " << file << endl;
		system("PAUSE");
		exit(EXIT_FAILURE);
	}

	int count; //nacitanie prveho cisla, cize pocet poly struktur

	inFile >> count;
	inFile.get();

	prispievatelia *ps = new prispievatelia[3];
	int i = 0;

	while(inFile.good()){
		inFile.getline(ps[i].meno, 20);
		inFile >> ps[i++].prispevok;
		inFile.get();

	}

	int pocet = 0;
	for(i = 0; i < count; i++){
		if(ps[i].prispevok >= 10000){
			if(pocet == 0){
				cout << "Velke patrony:\n";
				pocet = 1;
			}
			cout << ps[i].meno << " " << ps[i].prispevok << endl;
		}
	}

	pocet = 0;
	for(i = 0; i < count; i++){
		if(ps[i].prispevok < 10000){
			if(pocet == 0){
				cout << "Patrony:\n";
				pocet = 1;
			}
			cout << ps[i].meno << " " << ps[i].prispevok << endl;
		}
	}
	inFile.close();
	system("PAUSE");
}
Robo
C / C++ › Mistrovství v C++ (2 priklad…
20. 7. 2013   #179330

#1 kloss
Ten prvý je tak stavaný, aby tam to veľké patrony bolo stále hore. Ale dá sa to zmeniť aj tak ako chceš ty a  to 
tak, že si do programu vložíš počítadlo a reťazec veľké patrony sa ti vypíše len raz, keď bude počítadlo na nule.

int count = 0;

if(pt[i].prispevok >= 10000){
	if(count == 0){
		cout << "Velke patrony:\n";
		count = 1;
	}
	cout << pt[i].meno << ....
}


A čo konkrétne nevieš u toho druhého ?
Ja keď som to dávno robil, tak som to robil tak, že načítal som si prvé číslo zo súboru, následne som si spravil pole dynamických štruktúr (v tomto príklade 4) a potom si v cykle while postupne načítaval údaje zo súboru do premenných v štruktúre

 

 

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