Program liczacy najczesciej losowana dziesiatke w Multi-Lotku

0

Witajcie,
Potrzebuje pomocy w napisaniu programu - program wczytuje z pliku losowania Multi Lotka, musi oddzielic wyyniki z kazdej linii od daty i nr losowania(problem nr 1) oraz wyliczyc kombinacje wszystkich 10-tek w ramach kazdego losowania, porownac ja z innymi zapisanymi 10-tkami z reszty losowan (problem nr 2) i na koniec wyswietlic statystyke dla powiedzmy dziesieciu 10-tek (ta liczba nie jest zadana, moze wynosic np 3 lub 5 lub byc definiowana przez usera)
Program ma dzialac, nie musi byc pisany czystym jezykiem C lub C++.

Format kazdej linii:
nr_losowania.<spacja>dzien.miesiac.rok<spacja>wynik_1,wynik_2, ... wynik_20

Problem 1:
Moj program "wie" juz kiedy we wczytanej linii zaczynaja sie wyniki - znajduje druga spacje.. i tu moj problem polega na skopiowaniu ze stringu "wers" do stringu "wyniki" samych wynikow, czyli znakow od drugiej spacji do konca stringu "wers"

Problem 2:
Wyliczenie wszystkich kombinacji - wiem w zasadzie z czego mam skorzystac ( wszystkie mozliwe kombinacje bez powtorzen 10 elementow w 20 elementowym zbiorze) i ten problem pozostaje na razie "nie ruszony" ze wzgledu na problem nr 1.

Porownianie kazdej 10 chcialbym zrobic w tablicy struktur - tz kazda 10 zapisujemy w tablicy wynikow (1 element struktury) i jesli juz wystepuje zwiekszamy licznik o 1 (drugi element struktury) lub dodajemy jako nowy element na koncu, pozniej sortowanie i wyswietlanie ;)

Potrzebuje pomocy - a nie napisania programu za mnie ;)

Kod ktory juz mam:

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <vector>
#include <string.h>
#include <stdio.h>


using namespace std;


int main()
{
    int wybor, liczba, licznik=0, linie, spacja=0, w, l, i;
    char zakoncz='n';
    ifstream in("ml.txt");
    string wers;
    string wyniki;
    int licznik1=0;
    
    
    
    cout<<"Witaj w programie\n\n";   //Linia przeznaczona na stopke programu do uzupelnienia pozniej
    FILE*plik;
    if ((plik=fopen("ml.txt", "r"))==NULL) {
       printf ("Nie moge otworzyc pliku z danymi - sprawdz czy plik istnieje!\n");
       };
       
    do{  
    cout<<"\nWybierz opcje:\n\n";
    cout<<"1. Start programu.\n";
  
    cout<<"Twoj wybor to: ";cin>>wybor;
    
    switch(wybor){
                  case 1:{
                     
                       while(getline(in,wers)){
                       cout<<wers<<"\n\n";
                       spacja=0;
                       for(i=0;i<wers.length();i++){
                                                    
                                                    if(wers[i]==' ')
                                                                 spacja++;
                                                    cout<<spacja<<" "<<i<<" "<<wers[i]<<"\n"; //dla analizy programu linia wyswietla ilosc znalezionych spacji, licznik 'i' oraz znak w stringu pod licznikiem 'i'
                                                    if(spacja==2){            
                                                    //kopiowanie reszty stringu 'wers' po napotkaniu drugiej spacji do stringu 'wyniki' - problem nr 1
                                                    cout<<" ";
                                                    };
                       };
                       cout<<wyniki<<"\n\n";
                                                     
                       }
                       break;};
                       
                
    };
    cout<<"\nZakonczyc program? T/N: ";
    cin>>zakoncz;                   
    }while(zakoncz!='t');
    
    
   
    return EXIT_SUCCESS;
};
0
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <map>
using namespace std;
int main()
{
    map<string, vector <int> >tab;
    ifstream odczyt("t.txt");
    while(!odczyt.eof())
    {
        string tmp;
        int x;
        odczyt>>x>>tmp;
        for(int i=0;i<6;i++)
        {
            odczyt>>x;
            tab[tmp].push_back(x);
        }
    }
    odczyt.close();

    for (map<string,vector<int> >::iterator i = tab.begin(); i != tab.end(); ++i)
    {
        string key = i->first;
        cout<<key<<":\t";
	for(int j=0;j<tab[key].size() ;j++)
            cout<<tab[key][j]<<",";
        cout<<"\n";
    }
    return 0;
}

tu masz wczytanie tych liczb do mapy, gdzie kluczem jest data(z założeniem, że to jest duży lotek, na multi niewiele musisz zmienić).. Reszta jest prosta więc sobie poradzisz(jeżeli chcesz wyświetlić 10 najczęściej losowanych, to nawet do pamięci nie musisz ich wczytywać)..

edit:

1 01.01.1220 5 3 15 13 25 36

jak widzisz wczytuję tylko 6 liczb a nie 20 i tylko tu jest różnica w wczytaniu danych..

1 użytkowników online, w tym zalogowanych: 0, gości: 1