PDA

Tam Sürümünü Görmek İçin : C++ Sorusu


taner_c
27/01/2007, 14:33
Merhaba ben bir tane soruda takildim kaldim, nasil yapacagim konusunda hic bir fikrim yok. Sizlere sormak istemistim.
----------------------------------------------
#include <cstdlib>
#include <stdio.h>
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

class Sortable {
public:

char *index ;

void sinkingSort (Sortable **feld, int size ) {
Sortable *temp = NULL;

for (int i = 0 ; i < size ; i++) {
for (int j = 0 ; j < size-1; j++ ) {
if (strcmp (feld[j]->index , feld[j+1]->index))
{
temp = feld[j];
feld[j] = feld[j+1];
feld[j+1] = temp;
}
}
}
}
};
class TelefonBuchEintrag: public Sortable {

public :
char name[10];
char vorname[10];
char telefonnr[14];


TelefonBuchEintrag (char *name, char *vorname, char *telefonnr) {

strcpy (this->name, name) ;
strcpy (this->vorname , vorname) ;
strcpy (this->telefonnr ,telefonnr) ;
this->index = this->name;
}
TelefonBuchEintrag() {}
};

int main () {

TelefonBuchEintrag *tbe[5];

char puffer[100];
char such[]=",";
char filename[20];

char name[10] ;
char vorname[10] ;
char telefonnr[14] ;

fstream fop;
fop.open( /*filename*/ "t.txt" , ios::in);

int size=0;

while (fop.getline(puffer, 100 ))
{
strcpy( vorname, strtok ( puffer, such));
strcpy( name, strtok ( NULL, such));
strcpy( telefonnr, strtok ( NULL, such));
tbe[size] = new TelefonBuchEintrag( name, vorname, telefonnr );
size++;
}
fop.close ();

tbe[0]->sinkingSort((Sortable**) tbe, size );

for (int i = 0 ; i < size; i ++ ) {
cout << "Index : " << tbe[i]->index << endl;
cout << "Name : " << tbe[i]->name << endl;
cout << "Vorname : " << tbe[i]->vorname << endl;
}

system("pause");
}
------------------------------
bu kayitlar "name" e göre siralanmasi lazim, fakat parameter sort ** tipinden, bundan dolayi "name, firstname, telnr" ler degismiyor metot da. sadece key degisiyor.

Hatta simdi hic biri degismiyor...

Nasil yapmam lazim bu programi diye soracaktim ?

selamlar, taner


taner_c
27/01/2007, 14:50
:)
tamam oldu.
if (strcmp (feld[j]->index , feld[j+1]->index)>0)
>0 u unutmusum. ! :)
TSK,
Taner