LINUX.ORG.RU

Проблема с массивом


0

0

Пришлось мне переводить программу с питона на С, и вот наступил на первые грабли при работе с двумерным массивом:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int turm[3][4];


main(){
	int i;
	for (i=0;i<5;i++){
		turm[0][i] = 0;
		turm[0][i] = 0;
		turm[0][i] = 0;
		}
	for (i=0;i<5;i++){
		turm[0][i] = 3;
		}
	for (i=0;i<5;i++){
		printf("%i  ",turm[0][i]);
		printf("%i  ",turm[1][i]);
		printf("%i  \n",turm[2][i]);
		}
	}

На выходе получаю:

[stiner@stiner test]$ ./a.out
3  3  0
3  0  0
3  0  0
3  0  0
3  0  0

Как с этим бороться?

for (i=0;i<5;i++){ индексирует массив числами 0 ... 4, т.е. всего 5
элементов. У тебя же массив определен как состоящий всего из 4-х
элементов: int turm[3][4];
                      ^^^ - here

jek_
()

int i; for (i=0;i<5;i++){ turm[0][i] = 0; turm[0][i] = 0; turm[0][i] = 0; }

Зачем 3 раза присваивать одному и тоиу же элементу одно и тоже значение. Да и вроде размер [3][4], отсчет всегда начинался с 0. Если не понятно берешь карандаш и ... (0 1 2 3) и того 4=> for (int i = 0; i < 4; i++) А ты выходищь за границу массива. И вообще то цикл по строкам вообще у тебя отсутствует.

nil5
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.