Informatică, întrebare adresată de CristianBarbu, 9 ani în urmă

Rezolvare + Explicatie

Fişierul atestat.in conţine trei linii. Pe prima linie este scris un număr natural nenul n, (5<n<30).
Pe cea de-a doua linie a fişierului sunt scrise n numere naturale separate prin câte un spaţiu, formate fiecare din cel mult 4 cifre şi cel puţin 2 cifre, reprezentând un şir de n numere naturale. Cel puţin unul din cele n numere din şir este număr impar. Pe ultima linie este scris un un număr natural k, format din cel mult 4 cifre şi cel putin 2 cifre.

Să se scrie un program în limbajul Pascal/C/C++, care:
a) afişează pe ecran, în linie, separate printr-un spaţiu, numerele impare din şir;
b) pe scrie în fişierul, atestat.out, în linie, separate prin câte un spaţiu, cifrele de control ale elementelor şirului dat. Cifra de control a unui număr natural se obţine prin însumarea cifrelor din scrierea zecimală a numărului, apoi se însumează cifrele acestei sume şi tot aşa până se obţine o sumă formată dintr-o singură cifră. Exemplu: pentru numărul 672 avem 6+7+2=15, 1+5=6, cifra de control este 6.

Răspunsuri la întrebare

Răspuns de ionuttipa07
0
https://ghostbin.com/paste/rr3zu
Am facut-o, dar fara sa mai citesc acel k, pentru ca nu inteleg la ce foloseste. Ai si un exemplu la problema asta?


CristianBarbu: Se refera la ideea ca acel numar trebuie exprimat prin variabila k, un lucru simplu, probabil asta e.
Răspuns de rossetta
1
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin ("atestat.in");
ofstream fout ("atestat.out");

int cifraControl(int val) {
  if (val == 0)
    return 0;
  else if (val % 9 == 0)
    return 9;
  else
    return  val % 9;
}

int main() {
  int n;
  fin >> n;
  for(int i = 0; i < n; i++) {
   int val;
   fin >> val;
   if(val % 2 == 1)
     cout << val << ' ';
   fout << cifraControl(val) << ' ';
   }
   return 0;
}
Alte întrebări interesante