Padėkite išspręsti C++ programavimo uždavinį (nerandu problemos)

Karolis

Sveiki, gal galit padėt surasti bėdą šiame uždavinyje? - https://imgur.com/CVsKQvv
Čia mano sprendimas :

Viskas lyg ir tvarkoj tik paskutinio grybautojo taškus apskaičiuoja irgi gerai ,tačiau skaičiaus gale prirašo vieną skaitmenį, gal numanot kokia galėtų būti problema ir kaip ją spręsti?

#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;

int main()
{ int n, m, a, b, c;
int taskai1 = 0;
int taskai2 = 0;
int taskai3 = 0;
int max = -1;
ifstream in ("duom.txt");
ofstream out ("rez.txt");
in >> n >> m;
for (int k = 0; k<n; k++)
{
for (int i = 0; i<=m; i++)
{
in >> a >> b >> c;
a=a*3;
b=b*2;
c=c*1;
taskai1 = a+b+c;
taskai2 = a+b+c;
taskai3 = a+b+c;
}
}
if (taskai1>max) max = taskai1;
if (taskai2>max) max = taskai2;
if (taskai3>max) max = taskai3;
out << "Laimejo 3-asis zmogus. Jis surinko "<< max << " taskus";
in.close();
out.close();
return 0;
}

2019 m.
Išsamiai atsakykite į klausimą ir galėsite užduoti savo klausimą arba nemokamai peržiūrėti dokumentą iš mūsų svetainės. Dovanų kodą gaunate, kai jūsų atsakymas atsako į klausimą su paaiškinimais ir išrenkamas geriausiu atsakymu. Visi atsakymai tikrinami administratoriaus.

Atsakymai (4)

elele

Viskas cia gerai, tik truksta ; paskutiniame punkte, kur su nuliais. 

2019 m.
Monika

Iškarto pastebiu, kad, šiaip, Jūsų taskai1, taskai2 ir taskai3 nesiskiria, jie visada vienodi. Taip pat, kai reikia išvesti nugalėtoją, reikia jį apskaičiuoti, nes Jūsų programoje visada laimės trečias žmogus, nepriklausant nuo jo surinktų taškų. Antrasis for ciklas turi veikti, kol i < n, o ne i <= n. Beto patarčiau laikytis programos rašymo kultūros.

Mano programa:

#include <bits/stdc++.h>
#define MaxN 1000000

using namespace std;

int pointsPerPerson[MaxN] = {0};

int main()
{    
     int numOfPeople, hours;
     cin >> numOfPeople >> hours;
     int baravykai, raudonvirsiai, voveraites;
     int points = 0, maxPoints = -1, pos;
     for (int i = 0; i < numOfPeople; i++) {
         points = 0;
         for (int j = 0; j < hours; j++) {
             cin >> baravykai >> raudonvirsiai >> voveraites;
             points += baravykai * 3 + raudonvirsiai * 2 + voveraites;
         }
         if (points > maxPoints) {
             maxPoints = points;
             pos = i;
         }
     }
     cout << "Laimejo " << pos + 1 << "-asis zmogus. Jis surinko " << maxPoints << " taskus";
}

2019 m.
Lukas

Kitas atsakymas teisingas. Tik masyvas pointsPerPerson nereikalingas. Taip pat nereikalingas, tada, ir #define MaxN 1000000. Tavo, Karoli, išvestis, jau kažkodėl žino, kad trečias asmuo laimės, tai tuo atveju, jau gali ir surinktą taškų kiekį ranka įvesti. Patarčiau ateičiai kintamuosius pasivadinti normaliais pavadinimais, kad rašydamas ilgesnią programą suprastum, ką rašai, ir nereikėtų vis žiūrėti, ką reiškia tie a, b ir c intiger' iai.

2019 m.
griffin457

paskutineme lauke reikia susitvarkyyti su null

2019 m.

Parašykite atsakymą

Išsamiai atsakykite į lankytojo klausimą ir galėsite užduoti savo klausimą arba peržiūrėti norimą dokumentą iš mūsų svetainės. Dovanų kodą gaunate, kai jūsų atsakymas atsako į klausimą su paaiškinimais ir išrenkamas geriausiu atsakymu.

( el. paštu gausite dovanų kodą )

×
26 mokytojai prisijungę laukia tavo klausimo