Форум программистов, компьютерный форум CyberForum.ru

Арбузы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 34, средняя оценка - 4.94
vitalushechka
0 / 0 / 0
Регистрация: 29.09.2010
Сообщений: 4
29.09.2010, 15:05     Арбузы #1
Арбузы
(Время: 1 сек. Память: 16 Мб Сложность: 14%)

Иван Васильевич пришел на рынок и решил купить два арбуза: один для себя, а другой для тещи. Понятно, что для себя нужно выбрать арбуз потяжелей, а для тещи полегче. Но вот незадача: арбузов слишком много и он не знает как же выбрать самый легкий и самый тяжелый арбуз? Помогите ему!
Входные данные

В первой строке входного файла INPUT.TXT задано одно число N – количество арбузов. Вторая строка содержит N чисел, записанных через пробел. Здесь каждое число – это масса соответствующего арбуза. Все числа натуральные и не превышают 30000.
Выходные данные

В выходной файл OUTPUT.TXT нужно вывести два числа через пробел: массу арбуза, который Иван Васильевич купит теще и массу арбуза, который он купит себе.
http://********/?main=task&id_task=81

В этой задаче из представленных n чисел следует выбрать наибольшее и наименьшее число, а затем просто их вывести. Для поиска максимального элемента следует определить переменную max, в которую предварительно можно занести наименьшее возможное значение, 0 например (ведь все числа натуральные, т.е. больше нуля). Далее следует считывать в переменную x текущее значение и проверять: не больше ли оно ранее найденного, которое как раз храниться в max. Если да, то будем записывать его в max. Таким образом, по окончании процесса мы получим в max наибольшее значение. Поиск минимального элемента происходит аналогично. Заметим, что в этой задаче можно обойтись без использования массивов.

Рассмотрим алгоритм решения этой задачи:
read(n);
max=0; min=32000;
for i=1..n{
read(x);
if(x > max) max=x;
if(x < min) min=x;
}
write(min,' ',max);

На самом деле в этой задаче может возникнуть непонятный момент: что делать, когда арбуз всего один? Кому его нужно купить: себе или теще? Если рассуждать разумно (по жизни), то конечно лучше купить его себе, а теща обойдется и без арбуза. Но если следовать условиям задачи получается, что этот арбуз будет адресован как Ивану Васильевичу, так и его теще и в данном случае нужно выводить два одинаковых числа в качестве ответа.
http://********/index.asp?main=solution&id_task=81


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>
#include<math.h>
int math(void)
freopen("input.txt","r",stdin);
frreopen("output.txt",w,stdout);
int n,x,max,min;
{
scanf(n);
max=0;
min=32000;
for(i=1;i<n;i++)
{
scanf(x);
if (x>max) max=x;
if (x<min) min=x;
}
printf("%f, ,%f",&min,&max);
return 0;
}
вот что я пишу а мне выдает
unable to open include file 'STDIO.H'
unable to open include file 'MATH.H'
Declaration syntax error
хотя и стдио и матх у меня есть и находятся в папке C:\Borland\BC\INCLUDE (программа в папке C:\Borland\BC\BIN) если переместить их в папку с C:\Borland\BC\BIN и писать не <stdio.h> а "stdio.h" то еще больше ошибок
оч нужно, я не хочу 2 получить!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2010, 15:05     Арбузы
Посмотрите здесь:

Pascal ABC Арбузы
Pascal ABC Задача: "Арбузы"
C++ Арбузы (оптимальный поиск min и max)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Chainyk
 Аватар для Chainyk
15 / 15 / 1
Регистрация: 24.08.2010
Сообщений: 94
29.09.2010, 16:23     Арбузы #2
Не помню где точно, (сейчас не установлен такой древний компилятор), но нужно в опциях прописать путь к библиотекам. К каталогу либ и еще какому-то. Когда найдете в опциях, поймете
vitalushechka
0 / 0 / 0
Регистрация: 29.09.2010
Сообщений: 4
29.09.2010, 16:31  [ТС]     Арбузы #3
а решение не подскажеш? или я все правильно написал?
Chainyk
 Аватар для Chainyk
15 / 15 / 1
Регистрация: 24.08.2010
Сообщений: 94
29.09.2010, 17:08     Арбузы #4
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 "stdafx.h"
#include<stdio.h>
#include<math.h>
 
int main()
{
    FILE * fin, *fout;
    fin = fopen("input.txt","r");
    fout = fopen("output.txt","w");
    int n,k=1,max,min;
    max=0;
    min=32000;
    while (k!=-1)
    {
        k=fscanf(fin,"%d",&n);
        if (n>max) max=n;
        if (n<min) min=n;
    }
    fprintf(fout,"%d %d",min,max);
    fclose (fin);
    fclose (fout);
    return 0;
}
Обрати внимание! Должна присутствовать ф-ия main! Как используються fprintf и fscanf. И вообще как отличаеться мое решение от твоего. Прочти какую-то литературу по С/С++
vitalushechka
0 / 0 / 0
Регистрация: 29.09.2010
Сообщений: 4
29.09.2010, 17:51  [ТС]     Арбузы #5
я лит-ры по С++ никакой не читал потому что я в школе учусь и мне не сильна нужна эта информатика, так что мне нада хотя бы 4 получить чтоб атестат не портить

Добавлено через 8 минут
надеюсь я тебя не обидел тем что я так не очень хорошо отношусь к С++, и если можеш реши пожалуйста еще ету задачку
В отделе работают 3 сотрудника, которые получают заработную плату в рублях. Требуется определить: на сколько зарплата самого высокооплачиваемого из них отличается от самого низкооплачиваемого.
Входные данные

В единственной строке входного файла INPUT.TXT записаны размеры зарплат всех сотрудников через пробел. Каждая заработная плата – это натуральное число, не превышающее 105.
Выходные данные

В выходной файл OUTPUT.TXT необходимо вывести одно целое число — разницу между максимальной и минимальной зарплатой.
В данной задаче необходимо найти наибольшее и наименьшее значение и вывести их разность. Для этого проще всего упорядочить заданные числа A, B и C в порядке неубывания (A<=B<=C) и тогда значение C-A будет решением этой задачи. Для этого можно было бы прибегнуть к принципу чайника и отсортировать массив из трех элементов методом "пузырька", например. Но это решение не самое разумное в данном случае.

Здесь мы можем применить тот же метод "пузырька", но без циклов и массивов. Действительно, за 3 сравнения можно достичь желаемого результата. Сначала сравнивая А и B мы можем в A поместить наименьшее из них, поменяв их местами. Далее сравнивая A и C мы поместим в А наименьший из 3х чисел элемент. А после сравнения B и C в C получим наибольший. Описанный выше алгоритм можно представить в виде следующей блок-схемы:


На всякий случай напомним, как с помощью третьей переменной можно поменять значения переменных местами:
x=a; a=b; b=x;

В языке Си для различных целочисленных переменных a и b можно использовать более красивую и короткую запись без использования третьей переменной:
a^=b^=a^=b;
я ее решил, но похоже не все случаи разобрал и поэтому мне поставили -
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
30.09.2010, 01:02     Арбузы #6
vitalushechka, для решения второй задачи используй алгоритм первой задачи про арбузы. Найдешь самую большую зарплату и самую маленькую. А потом выведешь на экран разницу между ними и все.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
30.09.2010, 01:54     Арбузы #7
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
#include <iostream>
#include <fstream>
#include <algorithm>
    
int main(){
    std::ifstream ifs("input.txt");
    if ( ! ifs.is_open() ){
        std::cerr << "Can't open input file!" << std::endl;
        return 1;
    }
    int cnt;
    ifs >> cnt;
    int * arr = new int [ cnt ];
    for ( int i = 0; i < cnt; ++i )
        ifs >> arr[i];
    ifs.close();
    
    std::ofstream ofs("output.txt");
    if ( ! ofs.is_open() ){
        std::cerr << "Can't open output file!" << std::endl;
        return 1;
    }
    ofs << *std::min_element(arr, arr + cnt) << ' ' << *std::max_element(arr, arr + cnt) << std::endl;
    ofs.close();
    delete [] arr;
    
    return 0;
}
Арбузы
Вот, правда, в борланд с++ может и не сложиться...
vitalushechka
0 / 0 / 0
Регистрация: 29.09.2010
Сообщений: 4
30.09.2010, 07:33  [ТС]     Арбузы #8
В доме живет N жильцов. Однажды решили провести перепись всех жильцов данного дома и составили список, в котором указали возраст и пол каждого жильца. Требуется найти номер самого старшего жителя мужского пола.
Входные данные

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

Выходной файл OUTPUT.TXT должен содержать номер самого старшего мужчины в списке. Если таких жильцов несколько, то следует вывести наименьший номер. Если жильцов мужского пола нет, то выведите -1.
эту решите?
Yandex
Объявления
30.09.2010, 07:33     Арбузы
Ответ Создать тему
Опции темы

Текущее время: 17:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru