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.

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