eMatematikas Prisijunk Forumas Užduotys Testai Pradžia

C++ For ciklo pritaikymas skaitant duomenis is bylos


Sveiki visi, noriu paklausti kaip reiketu parasyti FOR cikla. Txt faile duota  10 skaiciu, reikia surasti pora kurios suma yra didziausia. Pasimeciau kaip cia reiktu rasyti :D
10
1 2
4 9
5 6
1 9
3 6

For ciklo čia nereikia, while reikia. Atsidarai failą, su while ciklu skaitai visas eilutes, su sscanf gauni skaičius iš eilutės ir tada žiūri ar suma didesnė už preitos eilutės.

c++ nemėgstu, bet parašiau kodą:
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    string eilute;
    ifstream skaiciuPoruFailas("skcPoros.txt");
    int pirmasSkaicius, antrasSkaicius, suma;
    if(skaiciuPoruFailas.is_open())
    {
        while(getline(skaiciuPoruFailas, eilute))
        {
            int skc1, skc2;
            sscanf(eilute.c_str(), "%d %d", &skc1, &skc2);
            if(skc1 + skc2 > suma){
                suma = skc1 + skc2;
                pirmasSkaicius = skc1;
                antrasSkaicius = skc2;
            }
        }
        skaiciuPoruFailas.close();
    }
    cout << "Didziausia pora: " << pirmasSkaicius << " " << antrasSkaicius << endl;
    cout << "Suma: " << suma << endl;
    return(0);
}

Kažkaip tavo kodas man labiau primena C nei C++, tad parašiau savo variantą (nors temos autoriui tai turbūt jau neaktualu).
int main(){
  ifstream df("duom.txt");
  int n, nr1, nr2, temp1, temp2, maxSum;
  df >> n;
  df >> nr1 >> nr2;
  maxSum = nr1 + nr2;
  for (int i = 0; i < n/2 - 1; i++){
    df >> temp1 >> temp2;
    if (temp1 + temp2 > maxSum){
      maxSum = temp1 + temp2;
      nr1 = temp1;
      nr2 = temp2;
    }
  }
  cout << "Largest sum: " << nr1 << " + " << nr2 << " = " << maxSum << endl;
}

Labai dekui uz atsakyma :)

Nori sudalyvauti šioje temoje ir parašyti savo pranešimą? Prisijungti »