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

Se consideră un şir de cel puțin 11 şi cel mult un 10000 de numere naturale, despărțite prin câte un spațiu. Fiecare număr are cel puțin două şi cel mult nouă cifre. Primul termen al şirului are numărul de ordine 1, al doilea are numărul de ordine 2 etc. Se citeşte şirul din fişier şi se cere să se determine numărul de ordine al unui termen al şirului care este precedat în fişier de un număr maxim de valori care au cifra zecilor egală cu a sa. Dacă sunt mai mulți termeni cu această proprietate se afişează numărul de ordine al primului.​

Răspunsuri la întrebare

Răspuns de mariussxz
0

Răspuns:

#include <iostream>

#include <fstream>

#include <vector>

using namespace std;

int main() {

// Deschidem fişierul

ifstream file("input.txt");

if (!file.is_open()) {

cout << "Nu am putut deschide fişierul!" << endl;

return 1;

}

// Citim şirul de numere din fişier

vector<int> numbers;

int n;

while (file >> n) {

numbers.push_back(n);

}

file.close();

// Determinăm numărul de termeni cu aceeași cifră a zecilor

int max_count = 0;

int max_index = 0;

int count = 0;

for (int i = 1; i < numbers.size(); i++) {

int tens_digit = (numbers[i] / 10) % 10;

int prev_tens_digit = (numbers[i-1] / 10) % 10;

if (tens_digit == prev_tens_digit) {

count++;

} else {

if (count > max_count) {

max_count = count;

max_index = i-1;

}

count = 0;

}

}

if (count > max_count) {

max_count = count;

max_index = numbers.size()-1;

}

// Găsim termenul cu numărul maxim de termeni cu aceeași cifră a zecilor care precede un alt termen cu cifra zecilor diferită

count = 0;

for (int i = max_index; i > 0; i--) {

int tens_digit = (numbers[i] / 10) % 10;

int prev_tens_digit = (numbers[i-1] / 10) % 10;

if (tens_digit != prev_tens_digit) {

break;

} else {

count++;

}

}

int result = max_index - count + 1;

// Afişăm rezultatul

cout << "Numărul de ordine al termenului cu numărul maxim de termeni cu aceeași cifră a zecilor care precede un alt termen cu cifra zecilor diferită este: " << result << endl;

return 0;

Alte întrebări interesante