С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 14.10.2010
Сообщений: 18

Одномерный массив, статическое выделение памяти, ошибка в объявлении

04.11.2010, 00:12. Показов 4456. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Снова надеюсь на вашу помощь.

В двух массивах записаны результаты 20 игр двух футбольных команд (если игра окончилась выигрышем данной команды, то записано число 2, проигрышем— 0, если игра окончилась вничью— 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
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
 
int *mas1,*mas2,i,sum1=0,sum2=0,p1=0,p2=0;
const int n=20;
int mas1 [n];
int mas2 [n];
if(((mas1[n])==NULL)||((mas2[n])==NULL))
{
    cout<<"Out of memory!"<<'\n';
    return 1;
}
cout<<"Vvedite ochki 1 comandu"<<'\n';
for (i=0;i<n;i++)
cin>>mas1[i];
cout<<"Vvedite ochki 2 comandu"<<'\n';
for (i=0;i<n;i++)
cin>>mas2[i];
for (i=0;i<n;i++)
{
    if (((mas1[i]==0)||(mas1[i]==1)||(mas1[i]==2))&&((mas2[i]==0)||(mas2[i]==1)||(mas2[i]==2)))
    {
        sum1+=mas1[i];
        sum2+=mas2[i];
        if (mas1[i]==2)
            p1++;
        if (mas2[i]==2)
            p2++;
        if (((mas1[i]==0)&&(mas2[i]==2))||((mas1[i]==1))&&((mas2[i]==1))||((mas1[i]==2)||((mas2[i]==0))))
        cout<<"Mogli igrat' vmeste"<<i<<'\n';
    }
}
return 0;
}
Code
1
2
3
4
1>e:\студенчество\информатика\4 лаба\3\3\3.cpp(9) : error C2372: mas1: переопределение; различные типы косвенного обращения
1>        e:\студенчество\информатика\4 лаба\3\3\3.cpp(7): см. объявление 'mas1'
1>e:\студенчество\информатика\4 лаба\3\3\3.cpp(10) : error C2372: mas2: переопределение; различные типы косвенного обращения
1>        e:\студенчество\информатика\4 лаба\3\3\3.cpp(7): см. объявление 'mas2'
Сначала объявляю указатели на массивы, хотя вот сейчас думаю, зачем они? Я ведь пользуюсь везде индексами.
Если не объявляю указатели, пишет, что mas1 используется до инициализации.
Чувствую, что знаю, что нужно исправить, но пока не знаю, как именно.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.11.2010, 00:12
Ответы с готовыми решениями:

Динамическое и статическое выделение памяти
Добрый вечер. Если участок программы допускает создание некоего объекта и статически, и динамически, то какой способ лучше использовать? ...

Статическое выделение памяти (FM for Android)
Вобщем чем начать и чем закончить... делаю приложение, как и у многих проблема возникла с автоподгоном под экран любого устройства. Нашел...

Выделение памяти под одномерный массив
int main() { int *a; a = new int; for (int i = 0;i &lt; 10;i++) { a = rand() % 100; cout &lt;&lt; i; } deletea; ...

8
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
04.11.2010, 00:17
Нотка, Во первых убрать указатели.
Во вторых убрать
C++
1
2
3
4
5
if(((mas1[n])==NULL)||((mas2[n])==NULL))
{
        cout<<"Out of memory!"<<'\n';
        return 1;
}
И в третьих в футболе за победу 3, за проигрыш 0, за ничью 1
0
0 / 0 / 0
Регистрация: 14.10.2010
Сообщений: 18
04.11.2010, 00:32  [ТС]
Цитата Сообщение от ForEveR Посмотреть сообщение
Нотка, Во первых убрать указатели.
Во вторых убрать
C++
1
2
3
4
5
if(((mas1[n])==NULL)||((mas2[n])==NULL))
{
        cout<<"Out of memory!"<<'\n';
        return 1;
}
И в третьих в футболе за победу 3, за проигрыш 0, за ничью 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
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
 
int i,sum1=0,sum2=0,p1=0,p2=0;
const int n=20;
int mas1 [n];
int mas2 [n];
cout<<"Vvedite ochki 1 comandu"<<'\n';
for (i=0;i<n;i++)
cin>>mas1[i];
cout<<"Vvedite ochki 2 comandu"<<'\n';
for (i=0;i<n;i++)
cin>>mas2[i];
for (i=0;i<n;i++)
{
    if (((mas1[i]==0)||(mas1[i]==1)||(mas1[i]==2))&&((mas2[i]==0)||(mas2[i]==1)||(mas2[i]==2)))
    {
        sum1+=mas1[i];
        sum2+=mas2[i];
        cout<<"Summa1="<<sum1<<'\t'<<"Summa2="<<sum2<<'\n';
        if (mas1[i]==2)
            p1++;
        if (mas2[i]==2)
            p2++;
        if (((mas1[i]==0)&&(mas2[i]==2))||((mas1[i]==1))&&((mas2[i]==1))||((mas1[i]==2)||((mas2[i]==0))))
        cout<<"Mogli igrat' vmeste"<<i<<'\n';
    }
    cout<<"Pobed11="<<p1<<'\t'<<"Pobed2="<<p2<<'\n';
    else
        cout<<"Error!"<<'\n';
 
}
return 0;
}
На консоль выводит, но итерации, когда могли играть вместе, выводит не всегда верно. Выводит и когда 1:2
Что тут не так?

Не по теме:

А условия мне дала преподавательница :sigh:

0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
04.11.2010, 00:42
Вроде нормуль.

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
#include <iostream>
using namespace std;
int main()
{
 
int i,sum1=0,sum2=0,p1=0,p2=0;
const int n=5;
int mas1 [n];
int mas2 [n];
cout<<"Vvedite ochki 1 comandu"<<'\n';
for (i=0;i<n;i++)
cin>>mas1[i];
cout<<"Vvedite ochki 2 comandu"<<'\n';
for (i=0;i<n;i++)
cin>>mas2[i];
for (i=0;i<n;i++)
{
        if (((mas1[i]==0)||(mas1[i]==1)||(mas1[i]==2))&&((mas2[i]==0)||(mas2[i]==1)||(mas2[i]==2)))
        {
                sum1+=mas1[i];
                sum2+=mas2[i];
                if (mas1[i]==2)
                        p1++;
                if (mas2[i]==2)
                        p2++;
                if (((mas1[i]==0)&&(mas2[i]==2))||((mas1[i]==1))&&((mas2[i]==1))||((mas1[i]==2)&&((mas2[i]==0))))
                cout<<"Mogli igrat' vmeste"<<i<<'\n';
        }
}
cout<<"Summa1="<<sum1<<'\t'<<"Summa2="<<sum2<<'\n';
cout<<"Pobed11="<<p1<<'\t'<<"Pobed2="<<p2<<'\n';
return 0;
}
0
0 / 0 / 0
Регистрация: 14.10.2010
Сообщений: 18
04.11.2010, 01:02  [ТС]
Не выводит количества побед, суммы и всё равно ситуации, когда могли играть вместе выводит неверно.
Миниатюры
Одномерный массив, статическое выделение памяти, ошибка в объявлении  
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
04.11.2010, 01:05
Нотка, Эм. Сумму и победы сто процентов должен выводить...
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
04.11.2010, 01:09
По сприну видно что все работает верно. Данные такие же как вводили вы.
Миниатюры
Одномерный массив, статическое выделение памяти, ошибка в объявлении  
0
0 / 0 / 0
Регистрация: 14.10.2010
Сообщений: 18
04.11.2010, 01:32  [ТС]
В коде ошибок нет, компилятор не ругается, но выводит у нас по-разному. Как написана программа, я поняла, поняла, почему, что и как меняли в коде. Это хорошо. Но проблема в том, что это отчёт по лабораторной. Поэтому у меня немного наглая просьба. Не могли бы вы ещё раз запустить програмку с любыми результатами, но сделать окошко с былым фоном и чёрными буковками? Свой скрин я то не могу вставить... Буду очень благодарна. Можно через инверсию в фотошопе, но там пропадает резкость, вобщем, придерутся за оформление...
0
 Аватар для KpeHDeJIb
57 / 57 / 5
Регистрация: 31.10.2010
Сообщений: 103
04.11.2010, 01:38
Осмелюсь предложить такой вариант на Си:

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
#include <stdio.h>
#include <math.h>
 
#define N 20
 
int main()
{
    int t, i, score[2][N] = {{0}}, sum[2] = {0}, wins[2] = {0};
 
    for (t = 0; t < 2; ++t)
    {
        i = 0;
 
        while (i < N)
        {
            printf("Enter score of match %u for team %u: ", i + 1, t + 1);
 
            if (scanf("%u", score[t] + i) != 1 || score[t][i] > 2 || score[t][i] < 0)
            {
                fflush(stdin);
                printf("Incorrect score, try again!\n");
 
                continue;
            }
 
            sum[t]  += score[t][i];
            wins[t] += (unsigned)(score[t][i] == 2);
 
            ++i;
        }
    }
 
    for (t = 0; t < 2; ++t)
        printf("Team %d total score %d and wins %d\n", t + 1, sum[t], wins[t]);
 
    for (i = 0; i < N; ++i)
        if (abs(score[0][i] - score[1][i]) == 2 || (score[0][i] == 1 && score[1][i] == 1))
            printf("Possibly teams played together game %d\n", i + 1);
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.11.2010, 01:38
Помогаю со студенческими работами здесь

Динамическое выделение памяти под одномерный массив
В общем, вопрос такой. Пусть нам нужно задать массив, используя динамическое выделение памяти. Как это сделать? Расскажу свой ход...

Выделение памяти при обычном объявлении
Пусть имеется некий код int main(){ int a, b, c, d, e, f , g , e; int f = 15; int z = 51; double doub = 23.1; int...

В какой момент вызывается конструктор для глобального объекта, использующего статическое выделение памяти?
В какой момент вызывается конструктор для глобального объекта, использующего статическое выделение памяти?

Двумерный Массив,динамическое выделение памяти-ошибка
Здравствуйте! Не могу найти ошибку в программе, некорректно работает именно с динамическим выделением памяти, со статическим все правильно...

Выделение памяти (CodeGear RAD Studio 2009 - C++ builder). Выделение памяти - консоль vs SDIApp
Есть определенный класс - длинная арифметика. Не идеальный - хранение данных исполнено в виде динамического массива типа short int, каждая...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru