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

Среди 13 монет есть одна отличающаяся по весу, за 3 взвешивания на чашечных весах найти ее - C++

Восстановить пароль Регистрация
 
boom299
2 / 2 / 0
Регистрация: 08.04.2011
Сообщений: 23
11.05.2011, 22:41     Среди 13 монет есть одна отличающаяся по весу, за 3 взвешивания на чашечных весах найти ее #1
Известно, что среди 13 монет есть одна отличающаяся по весу (фальшивая - тяжелее она или легче – неизвестно). За 3 взвешивания на чашечных весах найти эту монету
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2011, 22:41     Среди 13 монет есть одна отличающаяся по весу, за 3 взвешивания на чашечных весах найти ее
Посмотрите здесь:

Верно ли, что среди точек есть хотя бы одна, принадлежащая квадрату? C++
C++ У покупателя есть n монет достоинством H(1)...H(n)
Проверить, есть ли в матрице хотя бы одна строка, содержащая положительный элемент, и найти ее номер C++
Проверить истинность высказывания: «Среди трех данных целых чисел есть хотя бы одна пара совпадающих». C++
C++ Среди чисел а, b, с есть хотя бы одна пара взаимно противоположных.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 469
11.05.2011, 23:02     Среди 13 монет есть одна отличающаяся по весу, за 3 взвешивания на чашечных весах найти ее #2
boom299, тебе нужна прога?
Или тебе нужно решение а прогу сам напишешь?
Вообще если ввести название темы в гугл сразу найдешь решение.

Ответ: Отложим в сторону тринадцатую монету, а остальные обозначим следующим образом: FAKE MIND CLOT
Теперь взвешиваем одну четверку против другой (буквы обозначают монеты, входящие в каждую четверку): MA DO - LIKE, ME TO - FIND, FAKE - COIN. Теперь совершенно просто найти фальшивую монету, если она входит в эти двенадцать монет. К примеру, если результаты взвешивания были: слева легче, равно, слева легче, то фальшивой может быть только монета "A", которая легче других.
А что если фальшивой окажется все-таки отложенная нами, тринадцатая монета? Все очень просто: в этом случае при всех трёх взвешиваниях весы будут сбалансированы. К сожалению в этом случае нам не узнать легче или тяжелее тринадцатая монета, но в условии такого требования и не было
boom299
2 / 2 / 0
Регистрация: 08.04.2011
Сообщений: 23
11.05.2011, 23:07  [ТС]     Среди 13 монет есть одна отличающаяся по весу, за 3 взвешивания на чашечных весах найти ее #3
нужна прога на borland c...заранее спасибо
user-men
22 / 22 / 8
Регистрация: 17.02.2014
Сообщений: 300
03.07.2014, 23:48     Среди 13 монет есть одна отличающаяся по весу, за 3 взвешивания на чашечных весах найти ее #4
Вводи 12 цифр одинаковых а 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
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include <iostream>
#include <conio.h>
#include <stdlib.h>
using namespace std;
 
void Entering_data(int *mas)
{
    int num1 = 0, num2 = 0 ,Sev_i;
    cout << "Enter the data ->";
    for (int i = 0; i < 13; i++)
    {
        cin >> mas[i];
        if (mas[i] == 0)
        {       
            cout << "Erorr! (!=0)";
            getch();
            exit(0);
        }
        if (i == 0)
            num1 = mas[i];
        if (i == 2)
            if (mas[0] != mas[2] && mas[1] == mas[2])
                num1 = num2, num2 = mas[2], Sev_i = i;
        if (num1 != mas[i])
            if (num2 == 0)
                num2 = mas[i], Sev_i = i;
            else
            {
                cout << "Erorr! Introduced three different numbers: "<<num1<<","<<num2<<","<<
                mas[i]<<" (We're introducing only two different)";
                getch();
                exit(0);
            }
    }
    if (num2 == 0)
    {
        system("cls");
        for (int i = 0; i < 13; i++)
            cout << mas[i] << " ";
        cout << endl;
        cout << "Erorr! All figures are identical (We're introducing only two different)";
        getch();
        exit(0);
    }
    if (num2 < num1)
        mas[Sev_i] = num1*abs(mas[Sev_i]);
    system("cls");
}
 
void Pid_PD(int *mas,int Num_Elm)
{
    int tum1 = 0, tum2 = 0;//The second weighing(2)
    for (int i = 0; i < 2; i++)
        tum1 += mas[i];
    for (int i = 2; i < 4; i++)
        tum2 += mas[i];
    if (tum1 == tum2)
    {
        cout << "Parts were equal (1 == 2)\n";
        cout << "The answer is two weighing thirteen coin wrong (! = 13) && weighing = 2";
    }
    else
        if (tum1 > tum2)
        {
            cout << "The first part appeared to be heavier (1 > 2)\n";
            if (mas[0] > mas[1])//Third weighing(3)
            {
                cout << "3) Again, divide into two chatyny coins and weigh, The first part is heavier (1 > 2)\n";
                cout << "Answer three weighing " << Num_Elm + 1 << " coin wrong (! = " << Num_Elm + 1 << ") && Three weighting";
            }
            else
            {
                cout << "3) Again, divide into two chatyny coins and weigh, The second part is heavier (1 < 2)\n";
                cout << "Answer three weighing " << Num_Elm + 2 << " coin wrong (! = " << Num_Elm + 2 << ") && Three weighting";
            }
        }
        else
        {
            cout << "The second part proved more difficult(1 < 2)\n";
            if (mas[2] > mas[3])//Third weighing(3)
            {
                cout << "3) Again, divide into two chatyny coins and weigh, The first part is heavier (1 > 2)\n";
                cout << "Answer three weighing " << Num_Elm + 3 << " coin wrong (! = " << Num_Elm + 3 << ") && Three weighting";
            }
            else
            {
                cout << "3) Again, divide into two chatyny coins and weigh, The second part is heavier (1 < 2)\n";
                cout << "Answer three weighing " << Num_Elm + 4 << " coin wrong (! = " << Num_Elm + 4 << ") && Three weighting";
            }
        }
}
 
void Processing_data(int *mas)
{
    cout << "Set aside thirteenth coin aside, while others divide into three parts\n"<<
        "1) Consider the first and second part";
    int tum1 = 0, tum2 = 0;//The first weighing(1)
    for (int i = 0; i < 4; i++)
        tum1 += mas[i];
    for (int i = 4; i < 8; i++)
        tum2 += mas[i];
    if (tum1 == tum2)//case 3
    {
        cout << ", Parts were equal (1 == 2)\n2) The third part will divide into two, and weigh them, ";
        Pid_PD(&mas[8], 8);
    }
    else
        if (tum1 > tum2)//case 1
        {
             cout << ", Part one of appeared to be heavier (1 > 2)\n2) The first part of section two, and weigh them,";
             Pid_PD(&mas[0], 0);
        }
        else//case 2
        {
            cout << ", Part two proved more difficult (1 < 2)\n2) The second part will divide into two, and weigh them, ";
            Pid_PD(&mas[4], 4);
        }
}
 
int main()
{
    int mas[13];
    Entering_data(&mas[0]);
    Processing_data(&mas[0]);
    getch();
    return 0;
}
Yandex
Объявления
03.07.2014, 23:48     Среди 13 монет есть одна отличающаяся по весу, за 3 взвешивания на чашечных весах найти ее
Ответ Создать тему
Опции темы

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