Вопрос задан 22.06.2023 в 00:01. Предмет Информатика. Спрашивает Кот Катя.

Решить в с++ Известны данные о росте 15-ти юношей класса, упорядоченные по убыванию. Нет ни одной

пары учеников, имеющих одинаковый рост. В начале учебного года в класс поступил новый ученик (известно, что его рост не совпадает с ростом ни одного из учеников класса, превышает рост самого низкого ученика и меньше роста самого высокого). Определить фамилию ученика, рост которого меньше всего отличается от роста "новенького". Ввод данных лучше делать с файла.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Суворова Алла.

Файл с фамилиями и ростом прикреплён.

#include <iostream>

#include <fstream>

#include <windows.h>

using namespace std;

class People {

public:

string surname;

int height;

};

signed main() {

ifstream f;

People ppl[15];

int j = 0;

People newPpl;

try {

 cout << "Input surname and height new people:\n";

 cin >> newPpl.surname >> newPpl.height;

 try {

  f.open("guys.txt");

  while (!f.eof()) {

   f >> ppl[j].surname >> ppl[j].height;

   j++;

  }

 }

 catch (...) {

  cout << "Error with file!";

 }

 int _minR = abs(newPpl.height - ppl[0].height);

 string buff = ppl[0].surname;

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

  if (abs(newPpl.height - ppl[i].height) < _minR) {

   _minR = abs(newPpl.height - ppl[i].height);

   buff = ppl[i].surname;

  }

 }

 cout << endl << buff;

}

catch (...) {

 cout << "Error in main programm!";

}

return 0;

}



0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения данной задачи вам потребуется сначала считать данные из файла и затем выполнить несколько шагов для поиска ученика, чей рост меньше всего отличается от роста нового ученика. Вот C++ код, который решает эту задачу:

cpp
#include <iostream> #include <fstream> #include <vector> #include <cmath> struct Student { std::string name; int height; }; int main() { std::ifstream inputFile("student_data.txt"); if (!inputFile.is_open()) { std::cerr << "Ошибка открытия файла." << std::endl; return 1; } // Чтение данных о 15 учениках из файла std::vector<Student> students(15); for (int i = 0; i < 15; i++) { inputFile >> students[i].name >> students[i].height; } // Чтение данных о новом ученике Student newStudent; inputFile >> newStudent.name >> newStudent.height; inputFile.close(); // Найдем ученика, рост которого меньше всего отличается от роста нового ученика int minDifference = std::abs(students[0].height - newStudent.height); std::string closestStudentName = students[0].name; for (const Student& student : students) { int difference = std::abs(student.height - newStudent.height); if (difference < minDifference) { minDifference = difference; closestStudentName = student.name; } } std::cout << "Фамилия ученика, рост которого меньше всего отличается от новенького: " << closestStudentName << std::endl; return 0; }

В этом коде предполагается, что данные о студентах находятся в файле "student_data.txt", где каждая строка содержит имя студента и его рост, разделенные пробелом. Данные нового ученика также находятся в этом файле после данных о 15 учениках. Код сначала считывает данные из файла, затем находит ученика с наименьшей разницей в росте относительно нового ученика и выводит его фамилию.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос