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

Массив: Найти число команд, имеющих больше побед, чем поражений. - C++

Восстановить пароль Регистрация
 
XeniaZharinova
 Аватар для XeniaZharinova
0 / 0 / 0
Регистрация: 18.06.2013
Сообщений: 23
18.06.2013, 21:50     Массив: Найти число команд, имеющих больше побед, чем поражений. #1
На языке Pascal работает правильно, однако та же самая программа на C++ работает с ошибкой. Неправильно происходит накручивание побед (w[i]) и поражений(l[i]). Помогите найти в чём причина.
ЗАДАНИЕ:
Таблица футбольного чемпионата задана квадратной матрицей порядка n, в которой все элементы, принадлежащие главной диагонали равны 0, а каждый элемент, не принадлежащий главной диагонали, равен 2, 1 или 0 (число очков набранных в игре: 2 – выигрыш, 1 – ничья, 0 – проигрыш).
Найти число команд, имеющих больше побед, чем поражений.

Pascal
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
Program z3;
Uses CRT;
Var
    i,j,k,N:integer;
    A:array [1..50,1..50] of integer;
    w:array [1..50] of integer;
    l:array [1..50] of integer;
Begin
    Clrscr;
    write('N=');
    readln(N);
    k:=0;
    for i:=1 to N do
        for j:=1 to N do
            if i=j then
                A[i,j]:=0
            else 
                if i>j then begin
                    write('A[',i,',',j,']=');
                    readln(A[i,j]);
                    if (A[i,j]<>0) and (A[i,j]<>1) and (A[i,j]<>2) then begin
                        writeln('Owu6ka!');
                        readkey;
                        halt;
                    end;
                    if (A[i,j]=0) then
                        A[j,i]:=2;
                    if (A[i,j]=1) then
                        A[j,i]:=1;
                    if (A[i,j]=2) then
                        A[j,i]:=0;
                end;
    for i:=1 to N do begin
        w[i]:=0;
        l[i]:=0;
        for j:=1 to N do begin
            if (A[i,j]=0) and (i<>j) then
                inc(l[i]);
            if A[i,j]=2 then
                inc(w[i]);
        end;
    end;
    for i:=1 to N do
        if w[i]>l[i] then
            inc(k);
    writeln('4ucJIo koMaHD, uMeIOwux 6oJIbwe no6eD, paBHo ',k);
    readkey;
End.
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 <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int main()
{   int i,j,k,A[50],w[50],l[50],N;
    clrscr();
    printf("N=");
    scanf("%d",&N);
    k=0;
    for (i=1;i<=N;i++)
        for (j=1;j<=N;j++)
            if (i==j)
                A[i,j]=0;
            else
                if(i>j)
                {   printf("A[%d,%d]=",i,j);
                    scanf("%d",&A[i,j]);
                    if ((A[i,j]!=0)&&(A[i,j]!=1)&&(A[i,j]!=2))
                    {   printf("Owu6ka!");
                        getch();
                        exit(1);
                    }
                    if (A[i,j]==0)
                        A[j,i]=2;
                    if (A[i,j]==1)
                        A[j,i]=1;
                    if (A[i,j]==2)
                        A[j,i]=0;
                }
    for (i=1;i<=N;i++)
    {   w[i]=0;
        l[i]=0;
        for (j=1;j<=N;j++)
        {
            if ((A[i,j]==0)&&(i!=j))
                l[i]++;
            if (A[i,j]==2)
                w[i]++;
        }
    }
[B][COLOR="Red"]    for (i=1;i<=N;i++)
    {
        printf("w[%d]=%d",i,w[i]);
        printf("w[%d]=%d",i,w[i]);
    }[/COLOR][/B]
    for (i=1;i<=N;i++)
        if (w[i]>l[i])
            k++;
    printf("4ucJIo koMaHD, uMeIOwux 6oJIbwe no6eD, paBHo %d",k);
    getch();
}
Выделенный фрагмент создан для вывода на экран побед и поражений в каждой строке, которые и считаются неправильно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2013, 21:50     Массив: Найти число команд, имеющих больше побед, чем поражений.
Посмотрите здесь:

Определить можно ли в двумерном массиве найти такой столбец, который разбивает массив на два так, что сумма элементов в первом больше, чем сумма элеме C++
Найти число пассажиров, имеющих более двух вещей и... C++
C++ Одномерный массив (произведение последних членов, сумма которых будет не больше чем число С)
C++ Считать с файла информацию о команде "Название" "Город", количество побед, поражений, ничьих, забитых и пропущенных мячей
char массив, get(), ввести больше символов чем в массиве C++
C++ Вставить число k1 после всех чисел в массиве больше чем digit
C++ Определить номера команд, имеющих больше трех побед
Найти футбольные команды, имеющие больше трёх побед C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
18.06.2013, 21:54     Массив: Найти число команд, имеющих больше побед, чем поражений. #2
C++
1
A[i,j]=0;
Наверное, A[i][j];
XeniaZharinova
 Аватар для XeniaZharinova
0 / 0 / 0
Регистрация: 18.06.2013
Сообщений: 23
18.06.2013, 22:09  [ТС]     Массив: Найти число команд, имеющих больше побед, чем поражений. #3
Цитата Сообщение от ViktorKozlov Посмотреть сообщение
C++
1
A[i,j]=0;
Наверное, A[i][j];
Спасибо, языки путаю
Yandex
Объявления
18.06.2013, 22:09     Массив: Найти число команд, имеющих больше побед, чем поражений.
Ответ Создать тему
Опции темы

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