Pereiti prie turinio

Rekomenduojami pranešimai

na imest reiks nes rikiavimo nesimokiau, jauciu 12 klasei pamokys, kiek iseis tiek padarysiu, svarbu man kad bent sutapimo keoficienta apskaiciuot :)

 

gryba pjauna, rezultato faile meta keturis 0, 1, 6, 1. Zinau kad sesi nes ta pacia avi su ta pacia lygina:D zinau kad klaida kazkur lyginime yra, tik nezinau ar nuo logikos ar nuo neteisingo kodo parasymo.

pvz if salygoj galvoju ar nereik rasyt A[2].DNR[2], juk fragmentas tai antros avies vistiek imamas.

Veiksmo funkcijoj isvedima padariau tik siaip paziuret koki atsakyma isveda, tingejau rasyt kita funkcija kol nezinau ar gerai skaiciuoja.

 

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

using namespace std;

struct Avis
{
       string Vardas;
       string DNR;
       int koef=0;
};
void Nuskaitymas(Avis A[], int & avys, int & frag, int & eil_nr);
void Veiksmas(Avis A[], int avys, int frag, int tiriama_avis);
int main()
{
       int aviu_skaicius;
       int DNR_ilgis;
       int tiriama_avis;
       Avis A[10];
       Nuskaitymas(A, aviu_skaicius, DNR_ilgis, tiriama_avis);
       Veiksmas(A, aviu_skaicius, DNR_ilgis, tiriama_avis);
}

void Nuskaitymas(Avis A[], int & avys, int & frag, int & eil_nr)
{
       ifstream fd("Duom.txt");
       fd >> avys >> frag;
       fd >> eil_nr;
       for (int i = 0; i < avys; i++)
       {
               fd >> A[i].Vardas >> A[i].DNR;
       }
       fd.close();
}
void Veiksmas(Avis A[],int avys, int frag, int tiriama_avis)
{
       ofstream fr("Rez.txt");
       fr<<A[tiriama_avis-1].Vardas<<endl;
       for (int i = 0; i < avys; i++)
       {
               if(i!=tiriama_avis-1){
               for (int j = 0; j < frag; j++)
               {
                       if (A[i].DNR[j] == A[tiriama_avis-1].DNR[j])
                       {
                               A[i].koef++;
                       }
               }
               fr << A[i].Vardas <<" "<< A[i].koef<< "\n\n";
               }
       }
       fr.close();
}

 

 

kažkas tokio, buvo sumaišyta = su ==, taip pat vietoj tiriamos avies nr naudojai tiesiog skaičių 2, žodžiu labiau įsiskaityk į užduotį, bei labiau mąstyk ką rašai ;) liko pasidaryt rikiavimą ir viskas lyg, tai čia 5 minučių darbas. taip pat komentuok kodą, išsivystysi gerą įprotį, o ir sau bei kitiems pagreitinsi kodo supratimą

sėkmės

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Danke. Buvo pora vietu kur nezinojau kaip elgtis.. O rikiavima savarankiskai pasimokysiu:)

Keista.. Jau nesakysiu kad esu zalias su C++, bet mazai laiko programavimui skiriu. Todel yra loginiu spragu ir dvejoniu.

Beje, skaiciau vieno zmogaus kaip ir patarimus, ko reikia geram programeriui. Tai vienas is dalyku buvo kantrybe, net keista kaip greit sunervina kai kodas neveikia kaip nori:D

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Danke. Buvo pora vietu kur nezinojau kaip elgtis.. O rikiavima savarankiskai pasimokysiu:)

Keista.. Jau nesakysiu kad esu zalias su C++, bet mazai laiko programavimui skiriu. Todel yra loginiu spragu ir dvejoniu.

Beje, skaiciau vieno zmogaus kaip ir patarimus, ko reikia geram programeriui. Tai vienas is dalyku buvo kantrybe, net keista kaip greit sunervina kai kodas neveikia kaip nori:D

 

aš taip pat galima sakyt pusžalis toks, bet gyvename ir mokomės:) jei tik yra noro - išmoksi, kad ir koks nekantrus būtum.

o jei kažkas veikia ne taip, kaip norėtum - debuggini, ir tokiose mažose programose labai greit surasi, kas čia gyvent trukdo:) bet šiaip manau visus sunervina, kai nesigauna padaryt kaip norisi. dar dabar pamenu, kaip ~4 valandas programavau paprastą konsolinę programą, kuri padaro konsolėj ulamo staltiesę, ir vis gaudavosi kas nors blogai.. :D svarbiausia - norėti mokytis, ir viskas gausis

Nuoroda į pranešimą
Dalintis kituose puslapiuose

oid Rikiavimas(Avis A[], int avys, int avis)
{
string pap; // papildomas kintamasis
for (int i = 0; i < avys - 1; i++) {
	for (int j = 0; j < avys - i - 1; j++) 
	{
		if (A[j].Vardas > A[j + 1].Vardas) 
		{
			if (i != avis - 1)
			{
				pap = A[j].Vardas;
				A[j].Vardas = A[j + 1].Vardas;
				A[j + 1].Vardas = pap;
			}
		}
	}
}
}

 

Dariau rikiavima pagal vardus nes su skaiciais ir vardais nesigavo.

Gal kas kokiu pastabu turit? Gal kazkaip butu imanoma koda patrumpint.

Isvedimas gaunasi kaip ir praso egzo faile, tik va reik parasyt rikiavimo funkcija kaip jie nori. Bandziau bet nesigavo, bandysiu dar karta :)

Redagavo Deividas Sk
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Viską beveik teisingai pradėjai daryti, tik neaišku kam 2 „for“ ciklus naudoji.

 

void Rikiavimas(Avis A[], int avys, int avis)
{
 Avis laikinasKintamasis;
 for (int i = 0; i < avys-1  ; i++) 
 {
   if (i != avis -1 )
     {
       if (A[i].koef < A[i + 1].koef)
       {
         laikinasKintamasis = A[i];
         A[i] = A[i + 1];
         A[i + 1] = laikinasKintamasis;
       }
     }
 }
 for (int i = 0; i < avys - 1; i++) 
 {
   if (i != avis - 1)
   {
     if (A[i].koef == A[i + 1].koef)
     {
       if (A[i].Vardas > A[i + 1].Vardas)
       {
         laikinasKintamasis = A[i];
         A[i] = A[i + 1];
         A[i + 1] = laikinasKintamasis;
       }
     }
   }
 }
}

Redagavo Arik
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.

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