👤

Fişierul atestat.în conţine două linii. Pe prima linie este scris un număr natural nenul n,(5
Să se scrie un program, în limbajul Pascal/C/C++, care:
-afişează pe ecran, în linie, separate printr-un spaţiu, toate numerele impare din șir aflate pe poziții pare;
-prin intermediul unui subprogram, afişează pe ecran, separate prin câte un spațiu, elementele șirului după interschimbarea elementului minim cu cel maxim.
-scrie în fişierul atestat.out, pe o linie, separate prin câte un spațiu, cifra de control a fiecărui număr din șirul inițial: Cifra de control se obţine calculcând suma cifrelor numărului, apoi suma cifrelor sumei și tot așa până la obținerea unei singure cifre.
Exemplu:
atestat.in Date de ieşire:
7
248 326 27 165 7231 546 190 a)
b)

c) 165
248 326 7231 165 27 546 190
Fişierul atestat.out conţine:
5 2 9 3 4 6 1


Răspuns :

#include <fstream>

#include <iostream>

#include <algorithm>

using namespace std;

//Functie care afiseaza numerele pare de pe poz. impare

void afisare_pare_impare(int* v, int n) {

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

 if (i % 2 == 0 && v[i] % 2 == 0) cout << v[i] << " ";

}

cout << endl;

}

//Functie care afiseaza sirul dupa interschimabrea minumului cu maximul

void afisare_min_max(int* v, int n) {

int poz_minim = 0, poz_maxim = 0;

//Cautare min si max

for (int i = 1; i < n; i++) {

 if (v[i] > v[poz_maxim]) poz_maxim = i;

 if (v[i] < v[poz_minim]) poz_minim = i;

}

//Interschimbare

swap(v[poz_maxim], v[poz_minim]);

//Afisare sir

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

 cout << v[i] << " ";

cout << endl;

}

//Functie care returneaza cifra de control

int cif_control(int n) {

if (n == 0) return 0;

if (n % 9 != 0) return n % 9;

return 9;

}

//Functie care afiseaza cifra de control pentru fiecare numar

void afisare_control(int* v, int n) {

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

 cout << cif_control(v[i]) << " ";

}

int main() {

ifstream fin("atestat.in");

int n;

//Citire numar de valori fisier, alocare spatiu

fin >> n;

int *v = new int[n];

//Citire valori din fisier

for (int i = 0; i < n; i++) fin >> v[i];

//Subpunct A

afisare_pare_impare(v, n);

//Subpunct B

afisare_min_max(v, n);

//Subpunct C

afisare_control(v, n);

//Eliberare memorie

delete[] v;

return 0;

}

► NOTA

Am folosit algoritm eficient pentru calculul cifrei de control, bazat pe restul impartirii numarului la 9

Vă mulțumim că ați ales să vizitați site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, vă rugăm să ne contactați. Revenirea dumneavoastră ne va bucura, iar pentru acces rapid, nu uitați să ne salvați la favorite!


En Trainingsy: Alte intrebari