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

Логическая ошибка инициализации двумерного массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка при компиляции error: cannot convert ‘int (*)[5]’ to ‘int**’ for argument ‘1’ to ‘void Replase(int**)' http://www.cyberforum.ru/cpp-beginners/thread1123521.html
#include <iostream> #include <ctime> #include <iomanip> #include <cstdlib> #define row 5 #define col 5 using namespace std;
C++ При #include "BasicObject.h" в Universe.h начинают вылезать ошибки Здравствуйте! У меня какой-то бред, при #include "BasicObject.h" в Universe.h начинают вылезать ошибки: 1) error C2143: syntax error : missing ';' before '*' 2) error C4430: missing type specifier - int assumed. Note: C++ does not support default-int Указывают на строку использования класса Universe в BasicObject.h Вот общая схема инклюдов в классах: Program.h #include... http://www.cyberforum.ru/cpp-beginners/thread1123520.html
Компилятор ошибка (вызвали срабатывание точки останова) C++
1)Компилятор ошибка (вызвали срабатывание точки останова.) Как очистит память ? 2)как разъединить буквы и цифры и записать в массив 3)можно считать весь текст без цикла? #include <stdio.h> #include <conio.h> int main() { int i = 0; char* file=new char; FILE* fp = fopen("C:\\Users\\FX-8350\\Desktop\\введення файлів (2).txt", "r");
Умножение матрицы на вектор C++
Нужна помощь, ребята! Вот код программы, выбивает 2 ошибки: 1- значение А должны быть константными, объявляю их как константные, вылазит вторая ошибка в A = rand()%10+1; , что выражение должно быть допустимым для изменения левосторонним значением. #include <iostream> #include <math.h> // библиотека математических функций using namespace std; int main() { int n,m;
C++ Найти произведение положительных кратных 3 элементов http://www.cyberforum.ru/cpp-beginners/thread1123501.html
Найти произведение положительных кратных 3 элементов
C++ Среднее арифметическое последовательности отрицательных дробных чисел Помогите написать программу, которая вычисляет среднее арифметическое последовательности отрицательных дробных чисел, вводимых с клавиатуры. После того, как будет введено последнее число, программа должна вывести минимальное и максимальное число последовательности. Количество чисел должно задаваться во время работы программы. Буду благодарен. подробнее

Показать сообщение отдельно
satisfactor
0 / 0 / 0
Регистрация: 11.01.2010
Сообщений: 51
19.03.2014, 02:40     Логическая ошибка инициализации двумерного массива
Если массив statistics инициализировать
C++
1
 statistics[21][2] = {0};
, то столбцы массива statistics (те, которых 2, т.е. statistics[строка][столбец]) после прохождения цикла for (строка 26) меняются местами. Почему?

Рабочий вариант без инициализации:
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
128
129
130
131
132
133
134
135
136
137
138
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 1000
 
/* Prototypes */
int roll( void );
int rollDice( void );
int summarize( const int b[], int p );
void craps(int result[]);
 
/* enumerated constants representing the status of the game*/
enum Status { CONTINUE, WON, LOST };
 
/* Function main begins program execution */
int main( void )
{
    int i; /* counter */
    int results[ SIZE ][ 2 ];
    int wins [ 21 ] = {0};
    int loses [ 21 ] = {0};
    int statistics [ 21 ][ 2 ]; /* [i][0] loses in i games; [i][1] wins in i games */
 
    srand( time( NULL ) ); /* use time as a seed */
 
    for ( i = 0; i < SIZE; i++ ){
        craps( results[i] );
 
        if ( results[i][1] <= 20 )
            statistics[ results[ i ][ 1 ] ][ results[ i ][ 0 ] ]++;
        else
            statistics[ 0 ][ results[ i ][ 0 ] ]++;
    }
 
    printf("Win statistics:\n");
    printf("%5s%5s%5s\n","throws","wins","loses");
 
    for ( i = 1; i < 21; i++ )
    {
        printf("%5d%5d%5d\n", i, statistics[i][1], statistics[i][0] );
 
        if (i == 20 )
            printf("%5s%5d%5d\n", ">20", statistics[0][1], statistics[0][0] );
    }
 
 
    printf( "\nWin chance is %.2f", (float)summarize(wins, 21)/SIZE);
 
    return 0; /* indicates successful completion of the program */
} /* End main */
 
/* Functions */
int rollDice( void )
{
    int die1; /* first die */
    int die2; /* second die */
    int workSum; /* sum of dies */
 
    die1 = roll(); /* select a random value */
    die2 = roll(); /* select a random value */
    workSum = die1 + die2;/* summarize first and second die */
 
    /*printf("Player rolled %d + %d = %d\n", die1, die2, workSum ); /* display the result */
 
    return workSum; /* return the sum of dies */
}
 
int roll( void )
{
    return (1 + ( rand() % 6 ));
}
 
void craps (int result[])
{
    static int sum; /* sum of dies */
    static int myPoint; /* player's point */
    int iterations = 1; /* number of dice roll */
 
    enum Status gameStatus; /* contains CONTINUE, WON or LOST */
 
    sum = rollDice(); /* first cast of dies */
 
    /* determine the status of the game */
    switch( sum )
    {
        /* winning on the first roll */
        case 7:
        case 11:
            gameStatus = WON;
            break;
 
        /* lose on the first roll */
        case 2:
        case 3:
        case 12:
            gameStatus = LOST;
            break;
 
        /* remember point */
        default:
            gameStatus = CONTINUE;
            myPoint = sum;
            /*printf( "Point is %d\n", myPoint );*/
            break; /* not required */
    } /* end switch */
 
    /* while the game goes on */
    while ( gameStatus == CONTINUE )
    {
        iterations++ ;
        sum = rollDice(); /* cast dies again */
 
        /* determine the status of the game */
        if ( sum == myPoint ) /* winning by the point throw */
            gameStatus = WON;
        else
            if ( sum == 7 ) /* lose - player threw 7 */
                gameStatus = LOST;
    }
 
    /* Display the message about winning or losing */
    if ( gameStatus == WON )
        result[0] = 1;
    else
        result[0] = 0;
 
    result[ 1 ] = iterations;
}
 
int summarize( const int b[], int p )
{
    /* base case */
    if ( p == 1 )
        return b[ 0 ];
    else
        return b[ p - 1] + summarize( b, p - 1);
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru