doe het zelf projectje

Status
Niet open voor verdere reacties.

Hippe2k

Gebruiker
Lid geworden
26 jan 2009
Berichten
10
hallo allemaal,

ik ben momenteel met een doe het zelf project bezig.
Ik ben een stats programma aan het maken voor een spel wat ik speel.
de stats staan in een .txt file en zijn als volgt opgebouwd:

naam,getal,getal,getal.

met de komma's

Het is op het einde de bodoeling dat de een struct array als dat kan. dat ik de stats van vorige week en vandaag kan pakken en van elkaar aftrekken en kijken hoeveel iedereen vooruit is gegaan in een week.

zal beginnen met wat ik al heb.

Code:
typedef struct {
	   string naam;
	   int rank;
	   int punten;
	   int dorpen;
} stats;

int main()
{

char info[100];
char array[4][10];
char c;
int x,oo;
int lengte, index = 0, index2 = 0;

stats speler;

FILE* input;
input = fopen ("test.txt","r");
fscanf(input,"%s",info);

lengte = strlen(henk);
for (x = 0; x <=lengte; x++)
{
	if(info[x] != ',')
	{
		array[index][index2] = henk[x];
		index2++;
	}
	if (info[x] == ',')
	{
		index++;
		index2 = 0;
	}
}
speler.naam = array[0];
speler.rank = array[1];
speler.punten = array[2];
speler.dorpen = array[3];

//if (speler.naam == "disnoke")

	printf("%s\n", henk);
	printf("%s\n", speler.naam.c_str());
	printf("%s\n", speler.rank.c_str());
	printf("%s\n", speler.punten.c_str());
	printf("%s\n", speler.dorpen.c_str());

scanf("%i",oo);
}

wat werkt nog niet:

ik zet alles in een array dat gaat goed.
het is een char array ik wil de getallen graag in een geheel in een int hebben. echter dit krijg ik tot op heden nog niet echt voor elkaar

Als ik de naam string print dan komen er allemaal gekke tekens bij hartjes enzo.

2 strings met elkaar vergelijken.

if string1 == string 2

werkt ookt niet zoals ik het wil heb ergens gelezen dat je daar compare(string1,string2) voor moet pakken maar geen idee welke include ik daar voor moet maken.

iemand mij weer een beetje op weg helpen. en misschien tips om het sneller / eenvoudiger te maken.

alvast bedankt

h2k
 
ifstream myfile ("test.txt");

if (myfile.is_open())
{
while (! myfile.eof() )
{
getline (myfile,info);
}
myfile.close();
}

string::size_type loc = info.find( ",", 0 );
string::size_type loc2 = info.find( ",", 0, loc );
string::size_type loc3 = info.find( ",", 0, loc2 );

speler.naam = info.substr(0,loc);
speler.rank = info.substr(loc+1,loc2);
speler.punten = info.substr(loc2+1,loc3);
speler.dorpen = info.substr(loc3+1);
 
Allereerst: Waar wil je dit programma in maken? Post #1 is in C, Post #2 is in C++
 
Code:
#include <vcl.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

ifstream Oud ("Oud.txt");
ifstream Nieuw ("Nieuw.txt");

int members = 51;
const int size = 52;

typedef struct {
	   string naam;
	   string rank;
	   string punten;
	   string dorpen;
} stats;

int main()
{
	string sNieuw;
	string sOud;
	stats Nspeler[size];
	stats Ospeler[size];

if (Nieuw.is_open())
{
	while (! Nieuw.eof() )
	{
		int i;
		for (i = 1; i <= members; i++)
		{
				getline (Nieuw,sNieuw);
				string::size_type loc = sNieuw.find( ",", 0 );
				string::size_type loc2 = sNieuw.find( ",", loc+1 );
				string::size_type loc3 = sNieuw.find( ",", loc2+1 );

				Nspeler[i].naam = sNieuw.substr(0,loc);
				Nspeler[i].rank = sNieuw.substr(loc+1,loc2-loc-1);
				Nspeler[i].punten = sNieuw.substr(loc2+1,loc3-loc2-1);
				Nspeler[i].dorpen = sNieuw.substr(loc3+1);
				cout << Nspeler[i].naam << "  -- " << Nspeler[i].rank << " -- " << Nspeler[i].punten << " -- " << Nspeler[i].dorpen << endl;
		}
	}
	Nieuw.close();
}
	getchar();
}

is de laatste versie.
 
het antwoord is dus : C++
dus kun je ook string met elkaar vergelijken door == te gebruiken.

de eof() kune beter nooit meer gebruiken. In plaats daarvan zou je bijvoorbeeld kunnen zeggen:

Code:
while (getline(Nieuw, sNieuw )
{
     // hier heb je 1 regel zolang het bestand nog niet aan het eind is.
    
}

Om een string naar int te converten zou je de functie atol() kunnen gebruiken. Persoonlijk doe ik het altijd met een istringstream. Google beiden maar even, als je vragen hebt kunnen we je wel weer verder helpen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan