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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2011, 21:00   #1
Zhenya-Pvl
Пользователь
 
Регистрация: 26.03.2010
Сообщений: 42
Восклицание Unhandled exception at 0x76f06344 in Project.exe: 0xC0000005: Access violation.

В заголовке указано сообщение, выскакивающее с указанным там-же значком при выполнении вот этого кода:
Код:
int A,n,x;
char A2[100];
bool otr;

if (otr)
{
	for (int i = 1; 1 <= n; i++)
		if (A2[i] == '1')
			A2[i] = '0';
		else
			A2[i] = '1';

}
где массив A2 состоит из эл-тов '0' и '1'.
Видоизменял код как только мог, фантазия истощена. Что делать?
Эта ошибка останавливает всю программу.
Zhenya-Pvl вне форума Ответить с цитированием
Старый 22.02.2011, 21:02   #2
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

" " а не ' '
coNsept вне форума Ответить с цитированием
Старый 22.02.2011, 21:04   #3
Zhenya-Pvl
Пользователь
 
Регистрация: 26.03.2010
Сообщений: 42
По умолчанию

Неправда! Это не паскаль...

Попробовал, он вообще красным подчеркнул. Не, не в кавычках дело.

Последний раз редактировалось Zhenya-Pvl; 22.02.2011 в 21:06. Причина: попробовал
Zhenya-Pvl вне форума Ответить с цитированием
Старый 22.02.2011, 21:09   #4
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

В вашем случае у вас строка...
Цитата:
'' - символьная константа
"" - строковая константа
coNsept вне форума Ответить с цитированием
Старый 22.02.2011, 21:10   #5
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

У тебя for идёт от 1 до n, а должен от 0 до n (если n==100).
Код:
if (otr) {
    for (int i = 0; 1 < n; ++i) {
        if (A2[i] == '1') {
            A2[i] = '0';
        } else {
            A2[i] = '1';
        }
    }
}
Обрати внимание на скобки. Пиши скобки ВСЕГДА, а то так и запутаться можно.

Цитата:
В вашем случае у вас строка...
У него массив символов, для одного элемента этого массива надо использовать одинарные кавычки.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su

Последний раз редактировалось Obey-Kun; 22.02.2011 в 21:12.
Obey-Kun вне форума Ответить с цитированием
Старый 22.02.2011, 21:10   #6
Zhenya-Pvl
Пользователь
 
Регистрация: 26.03.2010
Сообщений: 42
По умолчанию

Как? Я вроде объявлял не строку, а char'овский массив... Строка, как я помню, это string =)
Zhenya-Pvl вне форума Ответить с цитированием
Старый 22.02.2011, 21:13   #7
Zhenya-Pvl
Пользователь
 
Регистрация: 26.03.2010
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Obey-Kun Посмотреть сообщение
У тебя for идёт от 1 до n, а должен от 0 до n (если n==100).
А если я записывал значения от 1 до n == 8?

Цитата:
Сообщение от Obey-Kun Посмотреть сообщение
Обрати внимание на скобки. Пиши скобки ВСЕГДА, а то так и запутаться можно.
Правда?.. Мне кажется, что это наоборот делает код более громоздким... Недавно с паскаля на с++ перешёл, первое впечатление - настолько чистый язык! =)

Последний раз редактировалось Zhenya-Pvl; 22.02.2011 в 21:14. Причина: испр.
Zhenya-Pvl вне форума Ответить с цитированием
Старый 22.02.2011, 21:16   #8
Zhenya-Pvl
Пользователь
 
Регистрация: 26.03.2010
Сообщений: 42
По умолчанию

Блин!!! 1 вместо i !!!
Ладно, всем спасибо =) Извините за беспокойство)))
Zhenya-Pvl вне форума Ответить с цитированием
Старый 22.02.2011, 21:20   #9
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Цитата:
У него массив символов, для одного элемента этого массива надо использовать одинарные кавычки.
Ух да sorry, только что проверил, забылся.
Я просто от этого оттолкнулся char str[] = "blabla";
Вот и подумал что и доступ к элементу тоже будет через двойные кавычки.
coNsept вне форума Ответить с цитированием
Старый 22.02.2011, 21:21   #10
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Цитата:
А если я записывал значения от 1 до n == 8?
Смотри, если массив объявлен так:
Код:
T my_array[3]
То в нём три элемента, но нумеруются они с нуля: my_array[0], my_array[1] и my_array[2]. Вот и всё.

Цитата:
Правда?.. Мне кажется, что это наоборот делает код более громоздким... Недавно с паскаля на с++ перешёл, первое впечатление - настолько чистый язык! =)
Ну вот смотри, был у тебя код:
Код:
checkStuff();
if(must_do_some_stuff)
    doSomeStuff();
doMoreStuff();
Всё работало нормально. Но ты захотел, чтобы оно сделало что-то ещё:
Код:
checkStuff();
if(must_do_some_stuff)
    doSomeStuff();
    domeSomeOtherStuff();
doMoreStuff();
По отступам получается одно, а по делу другое. Будь тут скобки, ошибки не возникло бы.
Я бы ещё использовал отступы по 4 символа и прилеплял бы начальную скобку ко всему, кроме деклерейшенов функций и классов. Вот, почитай по стилю: http://techbase.kde.org/Policies/Kdelibs_Coding_Style

Цитата:
Как? Я вроде объявлял не строку, а char'овский массив... Строка, как я помню, это string =)
Всё правильно у тебя. Для символа '', для строки "". Строка это не обязательно std::string, это может быть ещё и char* (так называемая C string, массив символов, заканчивающийся нуль-символом).
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Access violation at address 00447E73 in modul Project.exe. Read of address 00000057. ArtGrek Общие вопросы Delphi 40 12.03.2011 22:03
"Project 1.exe raised exception class EInvalidPointer with messege 'Invalid pointer operetion'".. DeEgo Помощь студентам 3 28.02.2010 07:51
Project Project1.exe raised exception class EnvalidOP Rock'n'rolla Безопасность, Шифрование 16 20.01.2010 18:39
Access violation at address 00456215 in module Autorun.exe. alexandrov28 Свободное общение 4 30.09.2009 21:41
Unhandled Exception Chazki Общие вопросы Delphi 2 14.04.2007 14:05