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;
}

Kovo 26 d. 14:04
Padėkite kitiems ir kiti padės Jums! 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.

Atsakymai (3)

elele

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

Balandžio 3 d. 21:08
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";
}

Gegužės 2 d. 09:50
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.

Gegužės 2 d. 10:42

Parašykite atsakymą

Padėkite kitiems ir kiti padės Jums! 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ą )

×
Nesuprantate kaip atlikti užduotį? Klauskite eksperto!