#include <iostream>
#include <string>
#include <fstream>


using namespace std; 

//Listans struktur
typedef struct lista{
    string namn;
    string ort;
    lista *next;
};

int main(){
    int antal = 0,antalspara=0,antallika=0,antalPerson=0;
    int langd;
    string namn, ort;
    bool bfinns;
    ifstream fil;
    string filnamn;
    //För första listan
    lista *afirst, *alast, *node, *itt;
    afirst = NULL;
    alast = NULL;
    //-----------------
    //För andra listan
    lista *ufirst, *ulast,*uitt;
    ufirst = NULL;
    ulast = NULL;


    cout<<"Vad heter filen: ";
    cin>>filnamn;

    fil.open(filnamn);
    if(fil.good() == false){
        cout<<"Filen gick ej att oppna";
        exit(EXIT_SUCCESS);
    }

    //Läser in alla namn till en lista
    while(fil.good()){
        node = new lista;
        node->next = NULL;
        getline(fil,node->namn);
        getline(fil,node->ort);
        langd = node->namn.length();
        if(langd == 0){
            break;
        }

        antalPerson++;
        if(afirst == NULL){
            afirst = node;
            alast = node;
        }
        else{
            alast->next = node;
            alast = node;
        }
    }



    //Kollar efter unika namn med hjälp av en andra lista
    itt = afirst;
    while(itt != NULL){
        bfinns = false; 
        //kollar om namn finns i listan redan
        uitt = ufirst;
        while(uitt != NULL){
            if(uitt->namn.compare(itt->namn)==0 && uitt->ort.compare(itt->ort)==0){
                bfinns = true;
                break;
            }
            uitt = uitt->next;
        }

        //annars skriver den in namnet i listan
        if(bfinns == false){
            node = new lista;
            node->next = NULL;

            node->namn = itt->namn;
            node->ort = itt->ort;

            if(ufirst == NULL){
                ufirst = node;
                ulast = node;
                antal++; //När den skriver in i listan så plussar jag antal med 1 för då har vi fått en unik person
            }
            else{
                ulast->next = node;
                ulast = node;
                antal++; //När den skriver in i listan så plussar jag antal med 1 för då har vi fått en unik person
            }
        }
        itt = itt->next;
    }


    itt = afirst;
    while(itt != NULL){
        antallika = 0;
        uitt = afirst;
        while(uitt != NULL){
            if(uitt->namn.compare(itt->namn)==0 && uitt->ort.compare(itt->ort)==0){
                antallika++;
            }

            uitt = uitt->next;
        }

        if(antalspara<antallika){
            antalspara = antallika;
            namn = itt->namn;
            ort = itt->ort;
        }
        itt = itt->next;
    }


    cout<<"Antal olika personer "<<antal<<endl<<"Personen som uppkom mest: "<<namn<<" fran: "<<ort<<endl;
    cout<<"Han uppkom: "<<antalspara<<" ganger"<<endl;

    system("PAUSE");
    return 0;
}

Sorry, I can't read Swedish.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.