Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
calcoolator
0 / 0 / 1
Регистрация: 29.10.2017
Сообщений: 6
#1

Найти номер самого старшего жителя мужского пола - C++

16.01.2018, 13:36. Просмотров 259. Ответов 5
Метки acmp, c++ (Все метки)

Вроде все правильно, но не проходит 3 тест(

Перепись
(Время: 1 сек. Память: 16 Мб Сложность: 15%)
В доме живет N жильцов. Однажды решили провести перепись всех жильцов данного дома и составили список, в котором указали возраст и пол каждого жильца. Требуется найти номер самого старшего жителя мужского пола.

Входные данные
Во входном файле INPUT.TXT в первой строке задано натуральное число N – количество жильцов (N ≤ 100). В последующих N строках располагается информация о всех жильцах: каждая строка содержит два целых числа: V и S – возраст и пол человека (1 ≤ V ≤ 100, S – 0 или 1). Мужскому полу соответствует значение S=1, а женскому – S=0.

Выходные данные
Выходной файл OUTPUT.TXT должен содержать номер самого старшего мужчины в списке. Если таких жильцов несколько, то следует вывести наименьший номер. Если жильцов мужского пола нет, то выведите -1.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
int main()
{
    int n;
    cin>>n;
    int arr[n], a[n];
    int max1 = arr[0];
    for (int i = 0; i < n; i++) {
        cin>>arr[i]>>a[i];
        if (arr[i] > max1 && a[i] != 0) {
            max1 = i;
        }
    }
    if (max1 - 1 > 0) {
        cout<<max1 - 1;
    } else {
        cout<<-1;
    }
    
    return 0;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2018, 13:36
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти номер самого старшего жителя мужского пола (C++):

Структуры: определить самого молодого представителя мужского пола и его знак Зодиака
Задание: Описать структуру с именем ZNAK , содержащий следующие поля: фамилия...

Массив структур: найти самого младшего и самого старшего школьника
Кароч , я хз как работать со структурами, помогите плиз, желательно со...

Найти среди людей самого старшего и самого тяжелого
Здраствуйте. Есть такое задание: нужно с помощью классов создать 100 человек...

Структуры. Найти самого старшего мужчину
Используя записи с полями: дата - с полями число, месяц, год; анкета - с полями...

Найти самого старшего человека из списка
Написать програму, вход/выход, на вход/выход принимает количество людей...

Напечатать список студентов мужского пола с указанием их возраста
здраствуйте. не получается с ответом задачи. вроде компилируется но не...

5
ir24
74 / 74 / 97
Регистрация: 21.12.2014
Сообщений: 185
Завершенные тесты: 1
16.01.2018, 17:11 #2
C++
1
2
3
        if (arr[i] > max1 && a[i] != 0) {
            max1 = i;
        }
Ошибка в этом фрагменте. Изначально max1 равняется возрасту первого жильца в списке, потом если находим мужчину старше, то в max1 записывается его номер. В следующих итерациях цикла идет сравнение возраста с номером.
1
marat_miaki
149 / 138 / 87
Регистрация: 08.04.2013
Сообщений: 554
17.01.2018, 10:49 #3
ошибка в 8 и9 строке. объявляем массив, хорошо, 9 строка int max1 = arr[0]; и что вы думаете будет в arr[0]? - ответ мусор - довольно непредсказуемое числа в любом случае всегда больше чем вы ожидаете
и поэтому лучше так 8 int arr[n]={}; - массив обнулили или int max1=0;

Добавлено через 14 минут

Добавлено через 3 минуты
ошибка и в 13 тоже, запоминаем номер, а надо найти возраст запомнить номер а max1 у нас возраст должен быть не номер

Добавлено через 5 минут
а какой массив за что отвечает? по коду и не определишь, тараканы ваши
1
Gaveyn
94 / 94 / 10
Регистрация: 12.09.2016
Сообщений: 150
17.01.2018, 11:52 #4
Accepted с первого раза
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
int main()
{
    int n; // количество жильцов
    int v,s; // возраст и пол
    cin>>n;
    int max=0; // максимальный возраст
    int k=0;// номер
    for(int i=0;i<n;i++)
    {
        cin>>v>>s;
        if(v>max&&s==1) 
        {
            max=v;
            k=i+1;
        }
    }
    if(k==0) k=-1;
    cout<<k<<endl;
    return 0;
}
Почему-то в последнее время все всё пытаются через массив делать.
1
marat_miaki
149 / 138 / 87
Регистрация: 08.04.2013
Сообщений: 554
17.01.2018, 13:00 #5
Вывод в файл допилить самому разрешается
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <fstream>
#include <cstdlib>
 
using namespace std;
 
int main() {
  int age, pol, maxV=0 ;
  int N,k=0;
  /*  Открыть файл для чтения ↓*/
  ifstream in ("Input.txt");
    if( !in)
    {
        cout<<"Ошибка открытия файла";
        system("pause");
        return 1;
    }
   /*  Прочитать из файла первое число  */
   in >> N;  // 
    N=0;    // чтоб не плодить переменные
while(!in.eof())
{
    in >> age >> pol;
    k++;
    if (age > maxV && pol==1) {maxV=age; N=k;}
}
  in.close();
    if (N==0) cout << -1;
    else {
    cout << "maxN-" << N;}
   return 0;
}
1
Fixer_84
827 / 637 / 645
Регистрация: 30.04.2016
Сообщений: 2,115
18.01.2018, 19:59 #6
Лучший ответ Сообщение было отмечено calcoolator как решение

Решение

calcoolator, здравствуйте! Я решал так. Все тесты пройдены:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <bits/stdc++.h>
  
using namespace std;
  
int main()
{
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    int N, age, sex, max, num, k;
    fin >> N;
    max = k = 0;
    for (int i = 0; i < N; i++)
    {
        fin >> age >> sex;
        if ((age > max) && (sex == 1))
        {
            max = age;
            num = k + 1;
        }
        else if (!k)
        {
            num = -1;
        }
        k++;
    }
    fout << num << "\n";
    fin.close();
    fout.close();
    system("pause");
    return 0;
}
1
18.01.2018, 19:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2018, 19:59
Привет! Вот еще темы с решениями:

Число. Вывести только цифры самого младшего и самого старшего разряда
Дано n-значное целое число введеное с клавиатуры. Вывести только цифры самого...

Классы в C++ Вывести на экран список граждан мужского пола с высшим образованием
/* Напишите программу на языке программирования С++, в которой создайте класс...

Структуры и массивы структур: найти самого старшего студента, родившегося летом
Нужна помощь с задачей: Найти и вывести на экран самого старшего студента...

Записи. Получить: список студентов мужского пола,проживающих в общежитие и процент сдавших экзамены без троек
Запись:Ф.И.О,место проживания(дома,в общежитие,на квартире),пол,баллы на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru