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

Определить результаты спортсменов, занявших первое и второе места - C++

Восстановить пароль Регистрация
 
анжела1993
Сообщений: n/a
07.11.2010, 18:02     Определить результаты спортсменов, занявших первое и второе места #1
3. В двух массивах записаны результаты 20 игр двух футбольных команд (если игра окончилась выигрышем данной команды, то записано число 2, проигрышем— 0, если игра окончилась вничью— 1). Организовать заполнение массивов с клавиатуры и проверку корректности ввода значений. На основе имеющихся данных определить:
а) суммарное количество баллов, которое заработала каждая команда:
б) количество матчей, окончившихся победой, для каждой команды;
в) вывести, какие игры команды могли провести совместно.

4. В массиве хранится информация о результатах 22 спортсменов, участвовавших в соревнованиях по бегу на 100 м. Определить результаты спортсменов, занявших первое и второе места. Задачу решить, не используя два прохода по массиву.

5*. Используя датчик случайных чисел, заполнить элементы массива неповторяющимися числами.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2010, 18:02     Определить результаты спортсменов, занявших первое и второе места
Посмотрите здесь:

C++ Вывести на экран первое и второе слово
C++ Результаты бросков спортсменов в матрице. Найти победителя
Определить объединение из двух полей. Первое поле - массив из четырех байт, второе - двойное слово C++
C++ Определить названия команд, занявших первое, второе и третье места
Определить объединение из двух полей. Первое поле – массив из четырех байт, второе – двойное слово C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
07.11.2010, 19:51     Определить результаты спортсменов, занявших первое и второе места #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
//английского не знаю, пользовался гугл-переводчиком)))
#include <iostream>
using namespace std;
bool test(int*);
int summa(int*);
int win(int*);
int together(int*,int*);
int main(){
    int Gasmyas[20];
    int Gasmyasochka[20];
    for(;;){
    cout<<"Enter result games for Gasmyas :"<<endl;
    for(int i=1;i<=20;i++){
        cout<<"for "<<i<<" game:";
        cin>>Gasmyas[i-1];
    } 
    if(!test(Gasmyas))
        cout<<"incorrect data!"<<endl;
    else break;
}     
    for(;;){    
    cout<<"Enter result games for Gasmyasochka :"<<endl; 
    for(int i=1;i<=20;i++){
        cout<<"for "<<i<<" game:";
        cin>>Gasmyasochka[i-1];
    }
    if(!test(Gasmyasochka))
        cout<<"incorrect data!"<<endl;
    else break;   
}
    cout<<"Gasmyas have "<<summa(Gasmyas)<<" balls"<<endl;
    cout<<"Gasmyasochka have "<<summa(Gasmyasochka)<<" balls"<<endl;   
    cout<<"Gasmyas win "<<win(Gasmyas)<<" matchs"<<endl; 
    cout<<"Gasmyasocka win "<<win(Gasmyasochka)<<" matchs"<<endl;
    cout<<"Commands may play together "<<together(Gasmyas,Gasmyasochka)\
        <<" matches"<<endl;
    system("pause");
    return 0;
}
bool test(int*array){
    for(int i=0;i<20;i++)
        if(array[i]!=0&&array[i]!=1&&array[i]!=2)
        return false;
    return true;
} 
int summa(int*array){
    int sum=0;
    for(int i=0;i<20;i++)
        sum+=array[i];
    return sum;
} 
int win(int*array){
    int wins=0;
    for(int i=0;i<20;i++)
        if(array[i]==2)
            wins++;
    return wins;
} 
int together(int*ar1,int*ar2){
    int tgs=0;
    for(int i=0;i<20;i++)
        if((ar1[i]==0&&ar2[i]==2) ||\
           (ar2[i]==0&&ar1[i]==2) ||\
           (ar1[i]==1&&ar2[i]==1))  
                tgs++;
    return tgs;
}
Добавлено через 1 час 1 минуту
4)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//массив должен быть заполнен числами с точкой(запятой) (ну гипотетически), но тут уж сами
//или можно сделать ввод данных вручную
#include <iostream>
using namespace std;
int main(){
    double mas[22]={10,5,6,7,8,5,8,9,5,7,7,5,10,5,6,7,8,5,8,9,5,7};
    double First=mas[0];
    double Second=mas[0];
    for(int i=0;i<22;i++){
        if(First>mas[i])
            First=mas[i];
        else if(Second>mas[i]&&mas[i]!=First)    
            Second=mas[i];
  }     
    cout<<"First "<<First<<"  Second "<<Second<<endl;       
    system("pause");
    return 0;
}
Beleaf
9 / 9 / 3
Регистрация: 14.04.2010
Сообщений: 99
07.11.2010, 19:56     Определить результаты спортсменов, занявших первое и второе места #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Я тоже 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
#include <iostream>
 
using namespace std;
 
int main()
{
    int i=0, j=0, frst[19], sumFrst=0, sumScnd=0, k=0, sumFrstWin=0, sumScndWin=0;
    int scnd[19], together[19];
    cout << "Input the results of the first team: " << endl;
    for (i=1; i<5; i++)
    {
        cin >> frst[i];
        if (frst[i]>=0 && frst[i]<3)
        {
            sumFrst += frst[i];
            if (frst[i] == 2) sumFrstWin += frst[i]/2;
        }
        else
        {
            cout << "Error! Input correct value (0-2)!" << endl;
            i--;
        }
    }
    cout << "Input the results of the second team: " << endl;
    for (i=1; i<5; i++)
    {
        cin >> scnd[i];
        if (scnd[i]>=0 && scnd[i]<3)
        {
            sumScnd += scnd[i];
            if (scnd[i] == 2) sumScndWin += scnd[i]/2;
        }
        else
        {
            cout << "Error! Input correct value (0-2)!" << endl;
            i--;
        }
    }
    for (i=1, j=1; i<5, j<5; i++, j++)
        if (frst[i] == scnd[i])
            {
                together[j] = i;
                k += 1;
            }
            else
            {
                j--;
            }
    cout << "Sum 1 = " << sumFrst << endl;
    cout << "Sum 2 = " << sumScnd << endl;
    cout << "The 1st team won " << sumFrstWin << " times." << endl;
    cout << "The 2nd team won " << sumScndWin << " times." << endl;
    cout << "These games teams could play together: " << endl;
    for (i=1; i<k-1; i++)
        cout << together[i] << " ";
    cout << endl;
    cin.get();
    cin.get();
    return 0;
}
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
07.11.2010, 20:03     Определить результаты спортсменов, занявших первое и второе места #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
int main(){
        int * arr, size;
        std::cout << "Number of elements: ";
        std::cin >> size;
        arr = new int [size];
        srand(time(NULL));
        for (int i = 0; i < size; ++i)
        {
            arr[i] = rand() % size + size * i;
        }
        std::cout << size << " unique random numbers:" << std::endl;
        for ( int i = 0; i < size; ++i )
        {
            std::cout << arr[i] << ' ';
        }
        std::cout << std::endl;
        delete [] arr;
        std::system("pause >> void");
        return 0;
}
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
07.11.2010, 20:06     Определить результаты спортсменов, занявших первое и второе места #5
Beleaf, почему у вас массивы из 19-ти членов, должно же быть 20 !

Не по теме:

и в целом код странный, хотя конечно же имхо
Как вы находите общие матчи? Я что-то логику понять не могу...



Добавлено через 1 минуту
а да, по пятому, анжела1993 вот сюда посмотрите, там на любой вкус)
KpeHDeJIb
 Аватар для KpeHDeJIb
56 / 56 / 3
Регистрация: 31.10.2010
Сообщений: 103
07.11.2010, 20:06     Определить результаты спортсменов, занявших первое и второе места #6
Ну блин, вот буквально несколько дней назад ведь было Одномерный массив, статическое выделение памяти, ошибка в объявлении вот точно то же самое
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
07.11.2010, 20:10     Определить результаты спортсменов, занявших первое и второе места #7
Цитата Сообщение от KpeHDeJIb Посмотреть сообщение
Ну блин, вот буквально несколько дней назад ведь было Одномерный массив, статическое выделение памяти, ошибка в объявлении вот точно то же самое
видать с одного факультета))
Beleaf
9 / 9 / 3
Регистрация: 14.04.2010
Сообщений: 99
07.11.2010, 20:46     Определить результаты спортсменов, занявших первое и второе места #8
Цитата Сообщение от Kastaneda Посмотреть сообщение
Beleaf, почему у вас массивы из 19-ти членов, должно же быть 20 !

Не по теме:

и в целом код странный, хотя конечно же имхо
Как вы находите общие матчи? Я что-то логику понять не могу...

нумерация в с++ идет с 0, посему 19 номер = 20 элемент.
Для нахождения общих матчей я создал новый массив together. В цикле я сравниваю результаты первой и второй команды по одной итерации. Если равны, то я заношу номер элемента в массив, чтобы в конце можно было определить КАКАЯ игра могла быть вместе. Переменная k служит для того, что бы можно было ограничить цикл вывода. Вроде все просто
А почему вы находите код странным?
Если будут еще вопросы, с радостью отвечу)

Кстати, для простоты дебага я ограничил массивы, так что можете расширить так, как вам нужно
x1Mike7x
 Аватар для x1Mike7x
214 / 127 / 6
Регистрация: 06.11.2010
Сообщений: 234
07.11.2010, 20:55     Определить результаты спортсменов, занявших первое и второе места #9
нумерация в с++ идет с 0, посему 19 номер = 20 элемент.
Ну так как бы Вы объявляете массив на 20 элементов, у которого индексы будут как раз [0..19]. Так что правильно будет как раз
C++
1
int frst[20], scnd[20], together[20];
Beleaf
9 / 9 / 3
Регистрация: 14.04.2010
Сообщений: 99
07.11.2010, 21:02     Определить результаты спортсменов, занявших первое и второе места #10
алгоритм нахождения общих матчей я поменял в ходе написания, по-этому получилась маленькая путаница. Если вы массив заполняете от 0 до 19, то объявлять нужно int mas[19]; а если с 1 до 20, как сделал я, то соответственно int mas[20]; я думаю это не существенно, можно вообще не уточнять размерность и пусть будет 65535 =)
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
08.11.2010, 09:33     Определить результаты спортсменов, занявших первое и второе места #11
Цитата Сообщение от Beleaf Посмотреть сообщение
Если вы массив заполняете от 0 до 19, то объявлять нужно int mas[19];
как раз int mas[20]
а если с 1 до 20, как сделал я, то соответственно int mas[20];
ээ.., наверно не в этом коде)
можно вообще не уточнять размерность...
тогда компилятор просто не сможет это скомпилировать.

По-поводу общих матчей, скажите при каком условии у вас матч считается общим?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2010, 12:52     Определить результаты спортсменов, занявших первое и второе места
Еще ссылки по теме:

C++ Структуры: ввести спортсменов, результаты и определить занятые ими места
C++ Определить объединение из двух полей. Первое поле - массив из двух байт, второе - слово
C++ Определить объединение из двух полей Первое поле - массив из двух байт, второе - слово

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

Или воспользуйтесь поиском по форуму:
x1Mike7x
 Аватар для x1Mike7x
214 / 127 / 6
Регистрация: 06.11.2010
Сообщений: 234
08.11.2010, 12:52     Определить результаты спортсменов, занявших первое и второе места #12
то объявлять нужно int mas[19]
Окей, скомпилируйте
C
1
2
3
4
5
6
7
8
9
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a[19]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
    printf("A[19]=%i", a[19]);
    getch();
    return 0;
}
А потом поменяйте в объявлении массива на int a[20] и еще раз компильните.
Yandex
Объявления
08.11.2010, 12:52     Определить результаты спортсменов, занявших первое и второе места
Ответ Создать тему
Опции темы

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