Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 66
1

Три ученика и три языка. Определить кто на каком программирует.

16.10.2013, 14:33. Показов 3609. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Решите задачи на C++(в виде кода программы)

3.Три ученика (Коля, Петя и Сережа) умеют писать программы на трех языках программирования (Basic, Pascal и C). Кто, на каких языках умеет писать программы неизвестно, но известно, что каждый ученик умеет писать программы на двух языках. При этом на Basic умеет программировать один ученик, на Pascal — трое и на C — двое. Кто умеет программировать на Basic, если известно, что Сережа научил Петю программировать на С?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2013, 14:33
Ответы с готовыми решениями:

кто на каком лиспе программирует?
доброе время суток форумчане!вот нужно написать пару дестков программ на лиспе а в какоим именно...

Заданы три массива. Определить, в каком массиве больше отрицательных элементов
Заданы массивы А(7),В(4),С(9),состоящие из положительных и отрицательных чисел.Определить,в каком...

Даны три натуральных числа. Определить, в каком из них сумма цифр больше.
Помогите решить задачу. Даны три натуральных числа. Определить, в каком из них сумма цифр больше....

Создать три экземпляра структуры и определить, в каком из них количество книг больше
Полями структуры book есть данные о количестве книг, трех авторов. Создать три экземпляра структуры...

17
193 / 170 / 32
Регистрация: 09.09.2013
Сообщений: 522
16.10.2013, 17:00 2
С - Сережа и Петя (известно по условию)
Паскаль - Коля, Петя и Сережа (известно по условию)
Бэйсик - Коля
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
16.10.2013, 17:17 3
Лучший ответ Сообщение было отмечено как решение

Решение

_, ну надо же
Цитата Сообщение от Сергей2000 Посмотреть сообщение
на C++
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <clocale>
 
int main()
{
    setlocale(LC_ALL, "");
    std::cout << "С - Сережа и Петя (известно по условию)\n"
                 "Паскаль - Коля, Петя и Сережа (известно по условию)\n"
                 "Бэйсик - Коля\n";
}
3
25 / 25 / 2
Регистрация: 25.09.2013
Сообщений: 76
16.10.2013, 17:39 4
Может что-то похитрее надо, чем просто вывод на экран?
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
16.10.2013, 17:57 5
Цитата Сообщение от govorov Посмотреть сообщение
Может что-то похитрее надо, чем просто вывод на экран?
дело в том что только автору решать как именно выполнять определение, "_" просто выполнил расчет перед написанием программы, чтобы облегчить работу компилятора
0
46 / 46 / 18
Регистрация: 25.10.2011
Сообщений: 183
16.10.2013, 17:57 6
Ытъ. Виноват, плохо читаю.
Может автор хотел программу, анализирующую строки и самой решающую загадку? (ИИ?)
0
15 / 15 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
16.10.2013, 18:08 7
Коля, конечно. Не столь замудреная задача.
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
16.10.2013, 19:07 8
Цитата Сообщение от govorov Посмотреть сообщение
Может что-то похитрее надо, чем просто вывод на экран?
вы правы, чего то не хватает:
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
#include <iostream>
#include <clocale>
 
class Nothing
{
  public:
    Nothing() { setlocale(LC_ALL, ""); }
    virtual void print() const = 0;
    void doNothing() const {}
    virtual ~Nothing() {}
};
 
void Nothing::print() const
{
    std::cout << "It's nothing to do" << std::endl;
}
 
class Something : private Nothing
{
  public:
    void print() const
    {
        doNothing();
        std::cout << "С - Сережа и Петя (известно по условию)\n"
                 "Паскаль - Коля, Петя и Сережа (известно по условию)\n"
                 "Бэйсик - Коля\n";
    }
};
 
class Just4Fun : public Something
{
  public:
    Just4Fun() : smth(new Something)
    {
        pfS memf_ptr = &Just4Fun::print;
        (smth->*memf_ptr)();
    }
    ~Just4Fun()
    {
        delete smth;
    }
 
  private:
    typedef void (Something::*pfS)() const;
    Something* smth;
};
 
 
int main()
{
    Just4Fun makeItReal;
}
так пойдет?
2
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,641
Записей в блоге: 13
16.10.2013, 19:11 9
Это комбинаторная задача. Решать ее надо так:

1) сгенерировать все возможности
2) отобрать те, которые не противоречат заданным условиям (возможно, кстати, что решение не единственно!)
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,641
Записей в блоге: 13
16.10.2013, 19:43 10
Так и есть! Решений-то возможно три (если я не напутал).

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
#include <iostream.h>
 
int Conf[3][3];
int V[9];
 
void printLang(int p)
{
    if (Conf[p][0]) 
        cout << "Pascal ";
    else
        cout << "       ";
 
    if (Conf[p][1]) 
        cout << "Basic  ";
    else
        cout << "       ";
 
    if (Conf[p][2]) 
        cout << "C      ";
    else
        cout << "       ";
 
}
 
 
void nextConfig()
{
    int k=0,i,j;
    while(1)
    {
        V[k]++;
        if (V[k] > 1)
            V[k++]=0;
        else
            break;
    }
    for (i=0; i<3; i++)
        for (j=0; j<3; j++)
            Conf[i][j]=V[i*3+j];
    
}
 
void checkConfig()
{
    int i,j,s;
 
    // сумма элементов 2-го столбца (бэйсик)
    // должна быть = 1
 
    s=0;
    for (i=0; i<3; i++) s+=Conf[i][1];
    if (s != 1) return;
 
    // в каждой строке матрицы сумма элементов 
    // должна быть = 2
 
    for (i=0; i<3; i++)
    {
        s=0;
        for (j=0; j<3; j++) s+=Conf[i][j];
        if (s != 2) return;
    }
 
    // Сережа и Петя знают C
 
    if ((Conf[1][2] != 1) || (Conf[2][2] != 1)) return;
 
    // Конфигурация подходит. Печатаем:
 
    cout << "Nick  "; printLang(0); cout << endl;
    cout << "Pete  "; printLang(1); cout << endl;
    cout << "Serge "; printLang(2); cout << endl;
 
    cout << endl;
    
}
 
 
int main(int argc, char* argv[])
{
    int i;
    for (i=0; i<8; i++) V[i]=0;
 
    for (i=0; i<=511; i++)
    {
        nextConfig();
        checkConfig();
    }
 
    return 0;
}
Миниатюры
Три ученика и три языка. Определить кто на каком программирует.  
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,641
Записей в блоге: 13
16.10.2013, 19:48 11
Поправочка: решений даже не три, а четыре!
0
1 / 1 / 0
Регистрация: 16.07.2013
Сообщений: 24
16.10.2013, 20:07 12
Цитата Сообщение от Catstail Посмотреть сообщение
Поправочка: решений даже не три, а четыре!
решение только одно

Сережа
Петя

Сережа
Петя
Коля

Коля

Бейсик - 1ч. Коля
С - 2ч. Сережа и Петя
Паскаль - 3ч. все
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,641
Записей в блоге: 13
16.10.2013, 20:18 13
Цитата Сообщение от Сергей2000 Посмотреть сообщение
на Pascal — трое и на C — двое.
- ай!!! Я не учел условие "Pascal — трое и на C — двое". Сейчас подправлю...

Добавлено через 3 минуты
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
#include <iostream.h>
 
int Conf[3][3];
int V[9];
 
void printLang(int p)
{
    if (Conf[p][0]) 
        cout << "Pascal ";
    else
        cout << "       ";
 
    if (Conf[p][1]) 
        cout << "Basic  ";
    else
        cout << "       ";
 
    if (Conf[p][2]) 
        cout << "C      ";
    else
        cout << "       ";
 
}
 
 
void nextConfig()
{
    int k=0,i,j;
    while(1)
    {
        V[k]++;
        if (V[k] > 1)
            V[k++]=0;
        else
            break;
    }
    for (i=0; i<3; i++)
        for (j=0; j<3; j++)
            Conf[i][j]=V[i*3+j];
    
}
 
void checkConfig()
{
    int i,j,s;
 
    // сумма элементов 1-го столбца (паскаль)
    // должна быть = 3
 
    s=0;
    for (i=0; i<3; i++) s+=Conf[i][0];
    if (s != 3) return;
 
    // сумма элементов 2-го столбца (бэйсик)
    // должна быть = 1
 
    s=0;
    for (i=0; i<3; i++) s+=Conf[i][1];
    if (s != 1) return;
 
    // сумма элементов 3-го столбца (C)
    // должна быть = 2
 
    s=0;
    for (i=0; i<3; i++) s+=Conf[i][2];
    if (s != 2) return;
 
 
    // в каждой строке матрицы сумма элементов 
    // должна быть = 2
 
    for (i=0; i<3; i++)
    {
        s=0;
        for (j=0; j<3; j++) s+=Conf[i][j];
        if (s != 2) return;
    }
 
    // Сережа и Петя знают C
 
    if ((Conf[1][2] != 1) || (Conf[2][2] != 1)) return;
 
    // Конфигурация подходит. Печатаем:
 
    cout << "Nick  "; printLang(0); cout << endl;
    cout << "Pete  "; printLang(1); cout << endl;
    cout << "Serge "; printLang(2); cout << endl;
 
    cout << endl;
    
}
 
 
int main(int argc, char* argv[])
{
    int i;
    for (i=0; i<8; i++) V[i]=0;
 
    for (i=0; i<=511; i++)
    {
        nextConfig();
        checkConfig();
    }
 
    return 0;
}
Вывод:

Код
Nick   Pascal  Basic
Pete   Pascal          C
Serge Pascal          C
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
16.10.2013, 20:33 14
Цитата Сообщение от Сергей2000 Посмотреть сообщение
Три ученика (Коля, Петя и Сережа) умеют писать программы на трех языках программирования (Basic, Pascal и C). Кто, на каких языках умеет писать программы неизвестно, но известно, что каждый ученик умеет писать программы на двух языках. При этом на Basic умеет программировать один ученик, на Pascal — трое и на C — двое. Кто умеет программировать на Basic, если известно, что Сережа научил Петю программировать на С?
а причем здесь С?
это нормальная житейская логика, она же комбинаторика,все двуязычные, но на Паскале все трое пишут
Сережа научил Петю писать на С, значит Сережа и Петя пишут на Си плюс они пишут на Паскале
Цитата Сообщение от Сергей2000 Посмотреть сообщение
Pascal — трое
они же и пишут на Си
Цитата Сообщение от Сергей2000 Посмотреть сообщение
на C — двое.
остается один двуязычный который пишет на Паскале но не пишет на Си
Цитата Сообщение от Сергей2000 Посмотреть сообщение
(Коля
так что Catstail, ты не прав
одно решение
мне даже лень писать прогу(кстати на каком языке)
ну примерно так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
enum(Paskal=1,Basic=2,C=4);
petya=Paskal | C;
serioha=Paskal | C;
kola=Paskal;
if(petya&Paskal & petya&C)
 printf("petya no basic");
 else
 printf("petya yes basic");
if(serioha&Paskal & serioha&C)
 printf("serioha no basic");
 else
 printf("serioha yes basic");
if(kola&Paskal & kola&C)
 printf("kola no basic");
else
 printf("kola yes basic");
могу конечно ошибаться, но по моему здесь перечисления(enum) плюс битовые поля само то
0
Почетный модератор
Эксперт С++
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
16.10.2013, 20:49 15
Господа, вы все наркоманы. Искренне вас благодарю, что разукрасили мой вечер.
0
ValeryS
16.10.2013, 20:56
  #16

Не по теме:

Цитата Сообщение от SatanaXIII Посмотреть сообщение
Господа, вы все наркоманы.
никогда]:->
я просто алкоголик

0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,641
Записей в блоге: 13
17.10.2013, 10:20 17
Цитата Сообщение от ValeryS Посмотреть сообщение
ак что Catstail, ты не прав
- см. выше.

Добавлено через 2 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
мне даже лень писать прогу
- а код что-то непонятен... Перебор должен присутствовать в том или ином виде. Разве нет?
0
25 / 25 / 2
Регистрация: 25.09.2013
Сообщений: 76
17.10.2013, 12:49 18
Цитата Сообщение от Catstail Посмотреть сообщение
Это комбинаторная задача. Решать ее надо так:

1) сгенерировать все возможности
2) отобрать те, которые не противоречат заданным условиям (возможно, кстати, что решение не единственно!)
Примерно это я и имел ввиду)
0
17.10.2013, 12:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2013, 12:49
Помогаю со студенческими работами здесь

Заданы три списка, сформировать из них три множества и определить их прямое произведение
помогите написать код программы.

Даны три стороны одного и три стороны другого треугольника. Определить, будут ли эти треугольники равновеликими
6. Даны три стороны одного и три стороны другого треугольника. Определить, будут ли эти...

Даны три стороны одного и три стороны другого треугольника. Определить, будут ли эти треугольники равновеликими, т.е. имеют ли они равные площади
Даны три стороны одного и три стороны другого треугольника. Определить, будут ли эти треугольники...

Сколько людей знают все три языка?
На кафедре лингвистики работают 13 человек, причем каждый из них знает хотя бы один иностранный...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru