Pereiti prie turinio

VBE 2011 Šokiai.


Rekomenduojami pranešimai

Sveiki, taigi turiu Problemą nuskaitant duomenys iš failo, kadangi skaitant ciklas įvyksta 5 kartus, bet nelabai išeina nuskaityt vardus iš failo.

užduotis: http://www.nec.lt/failai/2062_IT-VBE-1_2011.pdf (prieš paskutinis psl).

mano kodas:

#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <string>
using namespace std;
const char Cdf[] = "mokiniai.txt";
const char Cfd[] = "rez.txt";
const char Csf[] = "ugiai.txt";
const int Cmax = 100;
const int Cpav = 20;

struct Sokiai
{
   string vardai;
   int Tech[Cmax];
   int Artist[Cmax];
   int Vid[Cmax];
};

void Skaitymas (Sokiai A[], int &n, int  &m)
{

   ifstream fd(Cdf);
   fd>> n >> m;
   for(int i = 0; i < n; i++)
   {
        fd >> A[i].vardai;
        fd.ignore(' ', 10);
        for(int j = 0; j < m; j++)
        {
            fd >> A[i].Tech[j];
        }
        for(int k = 0; k < m; k++)
        {
            fd >> A[i].Artist[k];
        }
   }
   fd.close();
}

int main()
{
   int n, m; // teisėjai ir šokėjų skaičiams nusiskaityti iš failo.
   Sokiai A[Cmax];

   Skaitymas(A,n,m);
   return 0;
}

ką gaunu rez.txt :

Petras3 1 5 8 10 
5 6 7 8 9 
Rita6 5 8 5 8 
9 8 7 6 5 
Rasa10 10 10 10 10 
8 8 8 8 8 
0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 

 

Taigi ką blogai darau nuskaitant? niekaip negaliu sugalvot kaip čia nusiskaityt, kad normaliai viskas būtų.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pasidaryk vardų masyvą ir nuskaityk vardus atskirai. Turėtų veikti.

#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <string>
using namespace std;
const char Cdf[] = "mokiniai.txt";
const char Cfd[] = "rez.txt";
const char Csf[] = "ugiai.txt";
const int Cmax = 100;
const int Cpav = 20;

struct Sokiai
{
   string vardai[2]; // <------------------
   int Tech[Cmax];
   int Artist[Cmax];
   int Vid[Cmax];
};

void Skaitymas (Sokiai A[], int &n, int  &m)
{

   ifstream fd(Cdf);
   fd>> n >> m;
   for(int i = 0; i < n; i++)
   {
    	fd >> A[i].vardai[0] >> A[i].vardai[1]; // <----------------
    	for(int j = 0; j < m; j++)
    	{
        	fd >> A[i].Tech[j];
    	}
    	for(int k = 0; k < m; k++)
    	{
        	fd >> A[i].Artist[k];
    	}
   }
   fd.close();
}

int main()
{
   int n, m; // teisėjai ir šokėjų skaičiams nusiskaityti iš failo.
   Sokiai A[Cmax];

   Skaitymas(A,n,m);
   return 0;
}

 

Na žinok, nelabai veikia ir taip nelogiška, nes jeigu būtų tarkim eilutėje 3 vardai tai man reiktu tada kodą keist kad vadų masyvas būtų ne 2 o 3 :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Gal galėtum plačiau parašyti, kur ir kaip tau nukerta? Man viskas veikia.

Mano klaida ten buvo šiaip jo nusiskaitau dabar vardus du, bet ciklas tęsiasi tik iki n = 3 ir tada vėl meta nulius. va ką gaunu atsispausdines:

Petras Rasa3 1 5 8 10 
5 6 7 8 9 
Rita Jurgis6 5 8 5 8 
9 8 7 6 5 
Rasa Linas10 10 10 10 10 
8 8 8 8 8 
0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Taip ir turėtų būti su tais nuliukais - duomenų failas nurodo, kad yra 5 poros, o pateiktos tik 3 (fail'as užduoties aprašyme?).

nu žinok neturėtų būt gi NEC Sudarinėjo šitą užduotį.: va duomenų failo aprašymas:

Duomenys

Duomenys surašyti tekstiniame faile U2.txt. Visi skaičiai yra sveikojo tipo.

 Pirmoje eilutėje pateikiamas šokėjų skaičius n (1  n  100) ir teisėjų skaičius k (3  k  10).

 Kitose eilutėse yra surašyti kiekvienos šokėjų poros įvertinimai balais. Kiekvienai porai faile skirtos trys

eilutės: pirmoje iš jų eilutėje yra poroje šokančių vardai (pirmos 20 pozicijų), antroje – įvertinimai už

techniką, o trečioje – įvertinimai už artistiškumą.

ten pirmas 5 yra duotas už tai, kad vardai dalyvauja šokiuose. vienas vardas 2 kartus paminėtas ( Rasa). ir iš vardų man reikia vėliau sudaryt poras. :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Atsiprašau, ne taip perskaičiau ir galvojau, kad ten porų skaičius.

Nors ir nenurodytas porų skaičius, vis tiek siūlau nuskaityti taip, kaip dabar buvo (porų tikrai nebus daugiau nei žmonių), o toliau (skaičiuojant taškus ir t.t.) tik patikrinti, ar tos poros kintamieji nėra lygūs nuliui.

na žiūrėsiu, tada galėčiau skaityt eilute su getline tą patį gaučiau :).

galvojau , gal ką blogai darau ir galima kaip nors gauti po vieną vardą nu ta prasme, kad ciklas nusiskaitytų normaliai o ne N = 3 :)

Redagavo Julinho
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...