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

Напишите программу, которая по задуманному числу и предложенному варианту второго игрока считает количество «быков» и «коров». - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.60
Тина_Ливингстон
0 / 0 / 0
Регистрация: 01.11.2011
Сообщений: 59
09.11.2011, 22:25     Напишите программу, которая по задуманному числу и предложенному варианту второго игрока считает количество «быков» и «коров». #1
Первая задача

«Быки и коровы»


Вам, наверное, известна логическая игра «быки и коровы», но, тем не менее, пояс-ним ее правила. Один игрок задумывает четырёхзначное число, состоящее из различных цифр (ведущий ноль допустим). Второй игрок пытается отгадать задуманное число и на-зывает свои варианты (четырёхзначные числа в том же формате). В ответ первый игрок выдает фразу «n быков, m коров», где «быком» считается цифра из предложенного вари-анта, присутствующая в задуманном числе и стоящая на своем месте, а «коровой» - цифра, стоящая в другой позиции.
Так, если задумано число 5071, а предложенный вариант – 6012, ответ первого иг-рока «один бык, одна корова». Здесь «быком» считается цифра 0, а «коровой» - цифра 1.
Напишите программу, которая по задуманному числу и предложенному варианту второго игрока считает количество «быков» и «коров».
Входные данные находятся в текстовом файле BULLS.IN. Первая строка содержит последовательность из четырех цифр – задуманное число, во второй строке в том же фор-мате записан вариант ответа.
Выходные данные помещаются в текстовый файл BULLS.OUT. Единственная строка этого файла содержит два числа: количество «быков» и «коров».

Примеры входных данных Примеры выходных данных
5071 1 1
6012
4321
4321 4 0
1980
0879 0 3
1234
5678 0 0


Вторая задача.


Прижимистый дачник task code: GRATIS



Пенсионер Иван Иваныч вырастил на своей даче богатый урожай и упаковал его в N корзин. Вес i-й (1 ≤ i ≤ N) корзины равен Pi . Машины у Ивана Иваныча нет, но зато есть бесплатный сезонный билет на элек-тричку. Нанимать автомобиль для вывоза урожая Иван Иваныч не хочет – жалко денег... Вот и решил наш дачник потихоньку перевезти все свои кор-зины электричкой.
Согласно железнодорожным правилам, каждый пассажир имеет право бесплатно не более двух мест ручной клади суммарным весом не более Q. Платить за излишний багаж Иван Иваныч также не желает!
Определите минимальное число поездок, которые должен совершить дачник для перевозки всего урожая.
Входные данные находятся в файле GRATIS.IN. Первая строка файла содержит два целых числа – величины N и Q. Каждая из последующих N строк входного файла содержит одно целое число – величину Pi. Огра-ничения на данные: 1 ≤ N ≤ 100 000, 1 ≤ Pi, Q ≤ 10 000, Pi ≤ Q.
Выходные данные. В выходной файл GRATIS.OUT выведите искомое число поездок.

Пример входных данных Пример выходных данных
10 80 6
70
15
30
35
10
80
20
35
10
30

Для работы с текстовыми файлами необходимо:
1) подключить заголовочный файл <fstream>;
2) объявить входной и выходной потоки и связать их с файлами:
ifstream fin (”gratis.in”);
ofstream fout (”gratis.out”);
3) ввод-вывод выполнять с использованием этих потоков, например
fin >> N >> Q;
4) перед завершением работы программы закрыть файлы:
fin.close();
fout.close();


Как решения выглядят в с++???помогите пожалуйста!заранее, спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2011, 22:25     Напишите программу, которая по задуманному числу и предложенному варианту второго игрока считает количество «быков» и «коров».
Посмотрите здесь:

Напишите программу, которая выводит на экран фигуру в виде ромба, состоящего из звезд. Количество строк в ромбе задавать с клавиатуры. C++
C++ Cколько можно купить быков, коров и телят на 100 рублей
Программа, которая считает количество битов. C++
C++ Напишите программу, которая по введённому числу n проверяет является ли оно палиндромом
C++ Используя функцию, составить программу, которая считает количество изменений знака в массиве чисел. y=f(x). В С++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.11.2011, 22:31     Напишите программу, которая по задуманному числу и предложенному варианту второго игрока считает количество «быков» и «коров». #2
Быки и коровы
Тина_Ливингстон
0 / 0 / 0
Регистрация: 01.11.2011
Сообщений: 59
11.11.2011, 14:18  [ТС]     Напишите программу, которая по задуманному числу и предложенному варианту второго игрока считает количество «быков» и «коров». #3
спасибо за первую задачу...но,пожалуйста,помогите решить вторую задачу про дачника.
Тина_Ливингстон
0 / 0 / 0
Регистрация: 01.11.2011
Сообщений: 59
15.11.2011, 14:51  [ТС]     Напишите программу, которая по задуманному числу и предложенному варианту второго игрока считает количество «быков» и «коров». #4
Люди, завтра нужно сдать вторую задачу! пожалуйста, помогите!
Тина_Ливингстон
0 / 0 / 0
Регистрация: 01.11.2011
Сообщений: 59
05.12.2011, 22:47  [ТС]     Напишите программу, которая по задуманному числу и предложенному варианту второго игрока считает количество «быков» и «коров». #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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#include <fstream>
#include<algorithm>
using namespace std;
void main()
{
    setlocale(LC_ALL,".1251");
    int N,Q,k=0;
    ifstream fin ("GRATIS.IN");
    ofstream fout("GRATIS.OUT");
    fin>>N>>Q;
    if((N>=1)&&(N<=100000)&&(Q>=1)&&(Q<=10000))
    {
        int *a;
        a=new int [N];
        for(int i=0;i<N;i++)
        {
            fin>>a[i];
            if((a[i]>Q)||(a[i]<1))
                k++;
        }
 
        if(k==0)
        {
            reverse(a,a+N);
            //int temp;
            /*for(int i=0; i<N-1; i++)
            {
                for(int j=i+1; j<N; j++)
                    if(a[i]<a[j])
                    {
                        temp=a[i];
                        a[i]=a[j];
                        a[j]=temp;
                    }
            }*/
            int i=0;
            int j=N-1;
            k=0;
            while(i<j)
            {
                if((a[i]+a[j])<=Q)
                    j=j-1;
                i++;
                k++;
            }
            if (i==j)
                k++;
        }
 
                fout<<k;
        }
        else 
            fout<<"Вес одного из мешков не соответствует железнодорожным правилам";
 
    
 
    fin.close();
    fout.close();
}
MGchannel
 Аватар для MGchannel
0 / 0 / 0
Регистрация: 06.01.2014
Сообщений: 76
08.02.2014, 23:21     Напишите программу, которая по задуманному числу и предложенному варианту второго игрока считает количество «быков» и «коров». #6
C++
1
2
3
4
5
6
for(long i=0;i<N;i++)
        {
            fin>>a[i];
            if((a[i]>Q)||(a[i]<1))
                k++;
        }
Работает для больших чисел (ограничение-1999999+(размер типа long))
Yandex
Объявления
08.02.2014, 23:21     Напишите программу, которая по задуманному числу и предложенному варианту второго игрока считает количество «быков» и «коров».
Ответ Создать тему
Опции темы

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