Pereiti prie turinio

Rekomenduojami pranešimai

Sveiki,

 

Pagal vieno forumiečio c++ koda pradėjau analizuoti ir mokintis rašyti koda nežiurint į padaryta darba(tik pasitikrinimui).

 

Ir susiduriau su problema, nerandu kur beda, programa paleidžia tvarkingai tačiau kintamasis įgauna netinkama reikšme, ko neturėtu būti. Bent jau pagal pavizdį.

 

Mano kodas:

 

#include "stdafx.h"

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


using namespace std;

struct zuvys
{
string vardas;
int karos, karp, kuoj, sum;
};

void skaitymas(int &n, zuvys x[]) {
ifstream file("U2.txt");
int a,b,c,y,sum;
file >> n;
for(int i=0;i<n;i++) {
	int kar = 0, karp = 0, kuoj = 0;
	file >> x[i].vardas >> y;
	for(int j=0;j<y;j++) {
		file >> a >> b >> c;

		kar += a;
		karp += b;
		kuoj += c;
	}
	x[i].karos = kar;
	x[i].karp = karp;
	x[i].kuoj = kuoj;
	sum = kar + karp + kuoj;
	x[i].sum = sum;
}
}
void atvaizduoti(int &n, zuvys b[]) {

for(int i=1;i<n;i++) {
	cout << "Vardas: " << b[i].vardas << " Skaiciai: " << b[i].karos << endl;

}
}

int main() {

int n;
zuvys m[300];
skaitymas(n,m);
atvaizduoti(n,m);
}

 

Teisingas ir veikiantis kodas:

 

#include "stdafx.h"

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


using namespace std;

struct zuvys
{
 string vard;
 int karos,karp,kuoj,sum;
};

void skaitymas(int &n, zuvys x[])
{   ifstream failas("U2.txt");
   int a,b,c,y;
   failas >> n;
   for (int i=0;i<n;i++)
       {  
            int kar=0, karp=0, kuoj = 0;
           failas >> x[i].vard >> y;
           for (int j=0;j<y;j++)
           {
               failas >> a >> b >> c;
               kar += a;
               karp += b;
               kuoj += c;
           }
           x[i].karos = kar;
           x[i].karp = karp;
           x[i].kuoj = kuoj;
       }
   failas.close();
}



void sumos(int &n, zuvys z[])
{
   for (int i=0;i<n;i++)
       {
           int suma = 0;
           suma = z[i].karos + z[i].karp + z[i].kuoj;
           z[i].sum = suma;
       }
}

int maksimumas(int &n, zuvys c[])
{
      int max = 0;
      for (int j=1;j<n;j++)
       if (c[j].sum > c[max].sum)
       max = j;
       return max;

}

void irasymas(int &n, zuvys d[], int maxi)
{
   ofstream rez("U2rez.txt");
   for (int i=0;i<n;i++)
       rez << d[i].vard << " " << d[i].karos << " " << d[i].karp << " " << d[i].kuoj << endl;
       rez << d[maxi].vard << " " << d[maxi].sum;
   rez.close();
}


int main()
{
   int n;
   zuvys m[300];
   skaitymas(n,m);
   sumos(n,m);
   int max = maksimumas(n,m);
   irasymas(n,m,max);
   return 0;
}

 

U2.txt failo duomenys:

 

4

Petras 3

5 13 8

4 0 5

16 1 0

Algis 1

9 6 13

Jurgis 4

4 14 2

4 4 15

16 15 251

1 2 3

Rita 2

6 65 4

4 4 13

 

čia viskas iš informatikos egzamino.

 

Dėkui už pagalba iš anksto.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

O kas blogai konkrečiau?

Nes matau tik viena klaidą, tai išvedimą:

for(int i=1;i<n;i++) {

i turi būti lygus 0

Radau, savo problema, tiesiog Microsoft Visual Studio 2012 per programa sukompiliuoji o paskui tik turi iš aplanko ją paleisti, kad rezultata rodytu :)

Žiopla klaida, šia tėma bereikalo beveik sukuriau, na bet moderatoriai ištrins jei kitiems gali ji nepasirodyti kuom nors naudinga :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Radau, savo problema, tiesiog Microsoft Visual Studio 2012 per programa sukompiliuoji o paskui tik turi iš aplanko ją paleisti, kad rezultata rodytu :)

Žiopla klaida, šia tėma bereikalo beveik sukuriau, na bet moderatoriai ištrins jei kitiems gali ji nepasirodyti kuom nors naudinga :)

 

Per Studio leidžiant ją greitai praleidžia ir tiek, todėl nepastebi rezultato. Jei nori pamatyt rezultatą, tai pačioje pabaigoje parašyk nuskaitymo eilutę pvz cin >> kazkas; Tuomet programa iškarto nebaigs darbo, o lauks kažkokio input ir nereiks leisti per kitur programą, iškarto su F5 per studio bus paleidžiama :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Per Studio leidžiant ją greitai praleidžia ir tiek, todėl nepastebi rezultato. Jei nori pamatyt rezultatą, tai pačioje pabaigoje parašyk nuskaitymo eilutę pvz cin >> kazkas; Tuomet programa iškarto nebaigs darbo, o lauks kažkokio input ir nereiks leisti per kitur programą, iškarto su F5 per studio bus paleidžiama :)

arba galima paspausti CTRL-F5

Nuoroda į pranešimą
Dalintis kituose puslapiuose

O aš dar labiau pradedantysis. (nuo Pascal reikia prieti prie C++).

 

Pats susigalvojau programą, kuri apskaičiuotų diksriminantą ir parašytų galimus iksus.

 

Štai kodukas:

#include <iostream>
#include <cmath>


using namespace std;
int a;
int b;
int c;

void ivedimas(){
   cout << "Ivesk a" << endl;
   cin >> a;
   cout << "Ivesk b" << endl;
   cin >> b;
   cout << "Ivesk c" << endl;
   cin >> c;
}

void atsakymas(int ska, int skb, int skc){
   int D;
   D = (skb*skb)-(4*ska*skc);
   if (D > 0){
      double sqrtD = sqrt(D);
      double x1 = (-skb - sqrtD)/2;
      double x2 = (-skb + sqrtD)/2;
      cout << "Diskriminantas yra " << D << endl;
      cout << "x1 yra " << x1 << " , o x2 yra " << x2 << endl; 
      cout << "Diskriminanto saknis lygi " << sqrtD << endl;
   }
   if (D == 0){
      double sqrtD = sqrt(D);
      double x1 = (-skb - sqrtD)/2;
      cout << "Diskriminantas yra " << D << endl;
      cout << "x1 yra " << x1 << endl; 
   }
   if (D < 0){
      cout << "Diskriminantas yra neigiamas. Jo reiksme: " << D << endl;
   }
}
int main()
{ 
   ivedimas();
   atsakymas(int a, int b, int c);
   return 0;
}

 

Dėkui kas padės

Redagavo NeuTronas
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ą...