Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2013, 12:06   #1
Shadol
Пользователь
 
Регистрация: 23.11.2009
Сообщений: 10
По умолчанию Не могу вывести элементы массива на экран

Здравствуйте!
Начал изучать многомерные массивы и столкнулся с проблемой.Пишу программку заполнения массива при помощи генерации случайных чисел,для элементов массива, в диапазоне от 0 до 1 включительно.Если в элемент массива попадает число 1, то программа выводит на экран последовательно два символа ASCII (176),
в случае попадания в массив 0, программа выводит два пробела.

Компилируется успешно, но в процессе выполнения, вылетает ошибка.
Код ошибки: Unhandled exception at 0x0041157a in massives_mnogo.exe: 0xC0000005: Access violation reading location 0x00133000.
Если кто-нибудь поможет, буду очень признателен!

Код:
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int main(int argc, char* argv[])
{
	int massive[5][4];
	char charka = 176; 
	/*Создание двух циклов для ввода значений (0 или 1) в указанный номер строки и столбца*/
	for(int a = 0; a < 5; a++)
	{
		for(int b = 0; b < 4; b++)
		{
			massive[a][b] = 0 + rand() % 1;
		}
	}
	
/*Создание двух циклов для вывода символа, либо пробела, в зависимости от введенного значения (1 - символ, 0 - пробелы)*/
	for(int i = 0; i < 5; i++)
	{
		for(int j = 0; 0 < 4; j++)
		{
			/*В случае, если выбранный элемент массива будет равен единице, программа выведет два раза символ*/
                        if(massive[i][j] == 1) 
			{
			  cout << charka; 
			  cout << charka;
			}
			else
			{
		          cout << "  ";
		          cout << endl;
			}
		}
	}
	system("pause");
	return 0;
}
Shadol вне форума Ответить с цитированием
Старый 03.03.2013, 12:36   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
0 < 4
Что это?
Цитата:
Если кто-нибудь поможет,
То это только отладчик. Сделай пошаговку и посмотри на какой строке кода ошибка.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.03.2013, 12:36   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
0 < 4
Что это?
Цитата:
Если кто-нибудь поможет,
То это только отладчик. Сделай пошаговку и посмотри на какой строке кода ошибка.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.03.2013, 13:15   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Stilet

0 < 4
Что это?


бесконечный цикл с чтением мусора (((:
Rififi вне форума Ответить с цитированием
Старый 04.03.2013, 15:51   #5
Shadol
Пользователь
 
Регистрация: 23.11.2009
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Что это?
Цикл будет повторяться, пока значение буквы j в массиве не будет равно 4

Отладчик указывает на строку: mainret = main(argc, argv, envp);
При этом открывается закрепленный исходник: crtexe.c
Цитата:
Сообщение от Stilet;
бесконечный цикл с чтением мусора (((:
Разве? Модифицировал код с данного примера:
Код:
// array2.cpp: определяет точку входа для консольного приложения.
 
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int main(int argc, char* argv[])
{
// 1-условно "стенки лабиринта"
// 2-"правильный путь, выход из лабиринта"
// 0-"ложный путь"
    int mas[33][20] = { {1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,}, // инициализация двумерного массива
                        {1,2,1,0,0,1,0,1,2,2,2,1,1,1,1,0,0,0,0,1,},
                        {1,2,1,1,0,1,0,1,2,1,2,2,2,2,1,0,1,1,0,1,},
                        {1,2,2,2,2,2,2,1,2,1,1,1,1,2,1,0,0,1,0,1,},
                        {1,1,1,1,1,1,2,1,2,1,0,0,1,2,1,1,0,1,0,1,},
                        {1,0,0,1,0,0,2,2,2,1,1,0,0,2,0,0,0,1,0,1,},
                        {1,0,1,1,0,1,1,1,1,1,0,0,1,2,1,1,1,1,0,1,},
                        {1,0,0,0,0,0,0,0,0,1,1,1,1,2,1,0,0,0,0,1,},
                        {1,1,1,1,1,1,0,1,1,1,2,2,2,2,1,0,1,1,1,1,},
                        {1,1,0,0,0,1,0,0,1,1,2,1,1,1,1,0,0,0,0,1,},
                        {1,0,0,1,0,0,0,0,0,1,2,2,2,2,1,1,1,1,0,1,},
                        {1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,0,0,0,0,1,},
                        {1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,1,1,1,1,},
                        {1,2,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,},
                        {1,2,1,0,0,0,1,2,2,2,1,0,0,0,0,0,1,1,0,1,},
                        {1,2,1,1,1,1,1,2,1,2,1,1,1,0,1,0,0,0,0,1,},
                        {1,2,1,2,2,2,1,2,1,2,2,2,1,1,1,1,1,1,1,1,},
                        {1,2,1,2,1,2,1,2,1,0,1,2,2,2,2,2,2,2,2,1,},
                        {1,2,1,2,1,2,1,2,1,0,1,1,1,1,1,1,1,1,2,1,},
                        {1,2,1,2,1,2,1,2,1,0,0,0,0,0,0,0,0,0,2,1,},
                        {1,2,1,2,1,2,2,2,1,0,1,1,1,1,1,1,0,1,2,1,},
                        {1,2,1,2,1,1,1,1,1,0,0,0,1,0,1,0,0,1,2,1,},
                        {1,2,1,2,2,1,0,0,1,1,1,0,0,0,1,0,1,1,2,1,},
                        {1,2,1,1,2,1,1,0,0,0,0,0,1,0,1,0,0,1,2,1,},
                        {1,2,1,1,2,1,0,0,1,1,1,1,1,1,1,1,1,1,2,1,},
                        {1,2,1,1,2,1,1,0,1,2,2,2,2,2,2,2,2,2,2,1,},
                        {1,2,1,1,2,1,0,0,1,2,1,1,1,1,1,1,1,1,1,1,},
                        {1,2,1,1,2,1,0,1,1,2,1,1,1,1,1,1,1,1,2,2,},
                        {1,2,1,1,2,1,0,0,1,2,1,1,2,2,2,2,2,2,2,1,},
                        {1,2,1,1,2,1,0,1,1,2,1,1,2,1,1,1,1,1,1,1,},
                        {1,2,1,1,2,1,0,0,1,2,1,1,2,1,0,0,0,1,0,1,},
                        {1,2,2,2,2,1,0,1,1,2,2,2,2,0,0,1,0,0,0,1,},
                        {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,} };
// два цикла - внутренний и внешний, осуществляющие обращение к каждому элементу массива
    for (int i = 0; i < 33; i++) //переключение по строкам
    {
        for (int j = 0; j < 20; j++)// переключение по столбцам
            if (mas[i][j] == 1)
            {
                // вывести два раза символ (номер которого 176 в таблице аски) в консоль
                cout << static_cast<char>(176);
                cout << static_cast<char>(176);
            } else
                 cout << "  ";  // вывести два пробела
        cout << endl;
    }
    system("pause");
    return 0;
}
Из исходника программа должна выдавать такой результат:

Адрес сайта на изображении не является рекламой

Последний раз редактировалось Shadol; 04.03.2013 в 15:57.
Shadol вне форума Ответить с цитированием
Старый 04.03.2013, 17:08   #6
bambarbia
Пользователь
 
Регистрация: 20.10.2011
Сообщений: 44
По умолчанию

Код:
0+rand()%1;
всегда получается 0;
///////////////////////////
проверь
Код:
for (int i = 0; i < 20; i++)
	cout<< 0 + rand() % 1;
так получится
Код:
cout<< 0 + rand() % 2;
bambarbia вне форума Ответить с цитированием
Старый 04.03.2013, 20:13   #7
Shadol
Пользователь
 
Регистрация: 23.11.2009
Сообщений: 10
По умолчанию

Цитата:
Сообщение от bambarbia Посмотреть сообщение
Код:
0+rand()%1;
всегда получается 0;
///////////////////////////
проверь
Код:
for (int i = 0; i < 20; i++)
	cout<< 0 + rand() % 1;
так получится
Код:
cout<< 0 + rand() % 2;
Нет, так не выходит,я пробовал, отладчик выдает ту же ошибку.
Shadol вне форума Ответить с цитированием
Старый 05.03.2013, 15:58   #8
bambarbia
Пользователь
 
Регистрация: 20.10.2011
Сообщений: 44
По умолчанию

Цитата:
Цитата:
Цитата:
0 < 4
Что это?
тебе же писали, исправил?
в цикле for?

Последний раз редактировалось bambarbia; 05.03.2013 в 16:01.
bambarbia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ВЫвести элементы массива в обратном порядке Кристина Н Паскаль, Turbo Pascal, PascalABC.NET 1 01.12.2011 08:25
Скажите в чем ошибка, как в массиве найти арифметическую прогрессию и вывести элементы на экран? Lodyr Помощь студентам 0 21.12.2009 16:32
Не могу вывести на экран все отредактированные строки! iron-YYY Общие вопросы C/C++ 1 29.05.2009 11:12