Informatică, întrebare adresată de nick67, 8 ani în urmă

Fişierul text date.in conţine pe prima linie un număr natural nenul n (n≤100), iar pe a doua linie un şir de n numere naturale nenule distincte, separate prin câte un spaţiu, fiecare număr având maximum 8 cifre.
a) Scrieţi un program C/C++ care citeşte numerele din fişier şi determină câte dintre comopnentele şirului citit pot fi scrise ca sumă a altor două numere din acelaşi şir. Rezultatul obţinut se va afişa pe ecran. În cazul în care nu există niciun astfel de element, se va afişa valoarea 0.
Exemplu: dacă fişierul date.in conţine 6
1 10 25 2 15 3
atunci se va afişa valoarea 2 (deoarece 25=10+15, 3=1+2).
În C++ vă rog

Răspunsuri la întrebare

Răspuns de Corehowl
0

Răspuns:

#include <iostream>

#include <fstream>

int main()

{

   std::ifstream f1;

   int n, v[100], i, j, k, num = 0, ok;

   f1.open("date.in");

   f1 >> n;

   for (i = 0; i < n; i++)

       f1 >> v[i];

   f1.close();

   for (i = 0; i < n; i++)

   {

       ok = 0;

       for (j = 0; j < n; j++)

       {

           for (k = j + 1; k < n - 1; k++)

           {

               if (v[i] == v[j] + v[k])

                   ok = 1;

           }

       }

       if (ok == 1)

           num++;

   }

   std::cout << num << std::endl;

   return 0;

}

Explicație:

Posibil sa nu fie cel mai optimizat cod pe care l-ai vazut vreodata, dar face ce ai cerut sa faca. Daca mai ai vreo intrebare, nu ezita sa mi-o adresezi.

Alte întrebări interesante