Vector vo vector – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vector vo vector – C / C++ – Fórum – Programujte.comVector vo vector – C / C++ – Fórum – Programujte.com

 

Juraj
~ Anonymní uživatel
36 příspěvků
12. 5. 2014   #1
-
0
-

Ahoj, prosím o radu. chcem vytvoriť program ktorý načíta zo suboru meno, priezvisko a neobmedzený počet bodov.

format suboru .txt je takýto :

Janko Mrkvicka 1.1 0.7 1.2 0.6 0.5

Chcem toto načítať do vektoru, Problém je že neviem ako načítať tie body. vytvoril som si štruktúru OSOBA,

Struct OSOBA {

string meno

string priezvisko

?? no a tu nastáva problém kedže nechcem to robit tak že dám double bod1, double bod2....kedže neviem kolko ich je je to velmi nepraktické

}

potom inicializujem vector<OSOBA> osoba načítam si  osoba.meno,osoba.priezvisko no a dalej neviem.

chcel som použit další vector na tie body ale neviem ako to spraviť niečo ako

Struct OSOBA {

string meno

string priezvisko

vector(double) body

}

Dakujem za pomoc

Nahlásit jako SPAM
IP: 95.102.197.–
z
~ Anonymní uživatel
268 příspěvků
13. 5. 2014   #2
-
0
-

   

struct OSOBA {
	string meno;
	string priezvisko;
	vector<double> body;
};

vector<OSOBA> osoby;

void hrcprc()
{
	OSOBA o;
	o.meno = "Juraj";
	o.priezvisko = "Programator";
	o.body.push_back(1);
	o.body.push_back(2.3);

	osoby.push_back(o);
}
Nahlásit jako SPAM
IP: 88.101.8.–
Juraj
~ Anonymní uživatel
36 příspěvků
13. 5. 2014   #3
-
0
-

 tak snaižil som sa to nejako...aby my to načítalo z textového suboru ale neviem presne ako by mala vyzerať tá syntax toho pre načítanie aby to načítalo vypísalo meno, priezvisko a potom ten vector body..

struct OSOBA {
	string meno;
	string priezvisko;
	vector<double> body;
};

int _tmain(int argc, _TCHAR* argv[])
{
	ifstream ifsSubor;
	ifsSubor.open("vstup.txt");
	string sRiadok;
	vector<OSOBA> osoby;
	OSOBA o;
	while(! ifsSubor.eof())
	{
		getline(ifsSubor,sRiadok);
	    istringstream istrRiadok(sRiadok);
	if	((istrRiadok>> o.meno)&&
		(istrRiadok>>o.priezvisko)&&
		(istrRiadok>>o.body)&&
		(istrRiadok>>o.body.push_back(bod)));
	{
	osoby.push_back(o);
	}
int i=0;
	vector<OSOBA>::iterator it;

	for(it = osoby.begin(); it != osoby.end(); ++it)
	{
		cout.width(15);
	cout <<left << (*it).priezvisko <<"\t" << (*it).meno;
	}
		return 0;
}

Poprosím o radu

Nahlásit jako SPAM
IP: 95.102.197.–
Juraj
~ Anonymní uživatel
36 příspěvků
13. 5. 2014   #4
-
0
-

   


#include "stdafx.h"
#include <string>
#include <vector>
#include <sstream>
#include <iostream>
#include <fstream>
using namespace std;


struct OSOBA {
	string meno;
	string priezvisko;
	vector<double> body;
};

int _tmain(int argc, _TCHAR* argv[])
{
	ifstream ifsSubor;
	ifsSubor.open("vstup.txt");
	string sRiadok;
	vector<OSOBA> osoby;
	double bod;
	OSOBA o;
	while(! ifsSubor.eof())
	{
		getline(ifsSubor,sRiadok);
	    istringstream istrRiadok(sRiadok);
		istrRiadok>> o.meno;
		istrRiadok>> o.priezvisko;
		istrRiadok>> bod;
		o.body.push_back(bod);
		
	osoby.push_back(o);
	
int i=0;
	vector<OSOBA>::iterator it;

	for(it = osoby.begin(); it != osoby.end(); ++it)
	{
		cout.width(15);
	cout <<left << (*it).priezvisko <<"\t" << (*it).meno<<"\t" << (*it).body<<endl; 

	}
		return 0;

	
	}
}

toto som skúšal a píše to chybu pri tom << (*it).body   

Nahlásit jako SPAM
IP: 95.102.197.–
Juraj
~ Anonymní uživatel
36 příspěvků
13. 5. 2014   #5
-
0
-

No a tu je ďalšia verzia stále my to nejde :(

#include "stdafx.h"
#include <string>
#include <vector>
#include <sstream>
#include <iostream>
#include <fstream>
using namespace std;


struct OSOBA {
	string meno;
	string priezvisko;
	vector<double> body;
};

int _tmain(int argc, _TCHAR* argv[])
{
	vector<double> body;
	ifstream ifsSubor;
	ifsSubor.open("vstup.txt");
	string sRiadok;
	vector<OSOBA> osoby;
	double bod;
	OSOBA o;
	while(! ifsSubor.eof())
	{
		
		getline(ifsSubor,sRiadok);
	    istringstream istrRiadok(sRiadok);
		istrRiadok>> o.meno;
		istrRiadok>> o.priezvisko;
		istrRiadok>> bod;
		o.body.push_back(bod);

	osoby.push_back(o);
	}

     int i=0;
	vector<OSOBA>::iterator it;

	for(it = osoby.begin(); it != osoby.end(); ++it)
	{
		cout.width(5);
	cout <<left << (*it).priezvisko <<"\t" << (*it).meno<<"\t"<<endl; 
	}

	for (int i=0; i<body.size(); i++)
   cout << body[i] << ", ";

		return 0;
}
Nahlásit jako SPAM
IP: 95.102.197.–
p3can
~ Anonymní uživatel
312 příspěvků
13. 5. 2014   #6
-
0
-

c++ neumim takze toto ber s rezervou ale mel bys hodit vnitrni cyklus pri nacitani tech bodu neco jako:

misto  

while(! ifsSubor.eof())
	{
		
		getline(ifsSubor,sRiadok);
	    istringstream istrRiadok(sRiadok);
		istrRiadok>> o.meno;
		istrRiadok>> o.priezvisko;
		istrRiadok>> bod;
		o.body.push_back(bod);

	osoby.push_back(o);
	}

toto

Nahlásit jako SPAM
IP: 77.92.213.–
Juraj
~ Anonymní uživatel
36 příspěvků
13. 5. 2014   #7
-
0
-

wtf, kde je to ,,toto"

Nahlásit jako SPAM
IP: 95.102.197.–
p3can
~ Anonymní uživatel
312 příspěvků
13. 5. 2014   #8
-
0
-

jej sry nejak se me to nevlozilo xD

while(! ifsSubor.eof())
	{
		
		getline(ifsSubor,sRiadok);
	    istringstream istrRiadok(sRiadok);
		istrRiadok>> o.meno;
		istrRiadok>> o.priezvisko;
while(!istrRiadok.eof())
{
		istrRiadok>> bod;
		o.body.push_back(bod);
}
	osoby.push_back(o);
	}
Nahlásit jako SPAM
IP: 77.92.213.–
Juraj
~ Anonymní uživatel
36 příspěvků
13. 5. 2014   #9
-
0
-

Nefunguje to, nevypíše nič, ani len press enter to countinue

Nahlásit jako SPAM
IP: 95.102.197.–
z
~ Anonymní uživatel
268 příspěvků
13. 5. 2014   #10
-
0
-

Tak jen nekopíruj a přemýšlej.

Načítání - asi chceš načíst všechny body až do konce řádku.

Výpis - ty body jsou v osobě, takže jejich výpis asi bude v bloku, který prochází osoby a z nich je bude brát.

Nahlásit jako SPAM
IP: 88.101.8.–
Juraj
~ Anonymní uživatel
36 příspěvků
13. 5. 2014   #11
-
0
-

Tak mám toto  


#include "stdafx.h"
#include <string>
#include <vector>
#include <sstream>
#include <iostream>
#include <fstream>
using namespace std;


struct OSOBA {
	string meno;
	string priezvisko;
	vector<double> body;
};

int _tmain(int argc, _TCHAR* argv[])
{
	vector<double> body;
	ifstream ifsSubor;
	ifsSubor.open("vstup.txt");
	string sRiadok;
	vector<OSOBA> osoby;
	double bod;
	OSOBA o;
	stringstream ss;

while(getline(ifsSubor, sRiadok))
	{
		ss<<sRiadok;
		ss >> o.meno;
		ss >> o.priezvisko;

		while (ss >> bod) 
		{
			o.body.push_back(bod);

		}
	osoby.push_back(o);
	}

     int i=0;
	vector<OSOBA>::iterator it;

for(it = osoby.begin(); it != osoby.end(); ++it)
	{
		cout.width(5);
		cout <<left << (*it).priezvisko <<"\t" << (*it).meno; 

		for (int i=0; i<body.size(); i++)
			cout << body[i] << ", ";
		cout<<endl;
	}
cout<<endl;
		return 0;
}

a vypíše do konzoly toto  

Mrkvicka Jozef
Mrkvicka Jozef
Mrkvicka Jozef
Mrkvicka Jozef
Mrkvicka Jozef
Nahlásit jako SPAM
IP: 95.102.197.–
p3can
~ Anonymní uživatel
312 příspěvků
14. 5. 2014   #12
-
0
-

radek s
OSOBA o;
dej tak o 5 radku niz (do toho cyklu while)

Nahlásit jako SPAM
IP: 77.92.213.–
Juraj
~ Anonymní uživatel
36 příspěvků
14. 5. 2014   #13
-
0
-

dakujem , funguje to

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

Podobná vlákna

Vector — založil Peter D.

2D vector — založil Huge

Vector a erase — založil yaqwsx

Kontajner vector — založil kaja

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ý