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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2014, 17:17   #1
халява
 
Регистрация: 02.04.2014
Сообщений: 7
По умолчанию vs2010 ошибка

При компиляции проги вылетает ошибка:
Цитата:
Имя события проблемы: APPCRASH
Имя приложения: Шифратор.exe
Версия приложения: 0.0.0.0
Отметка времени приложения: 5395b20a
Имя модуля с ошибкой: Шифратор.exe
Версия модуля с ошибкой: 0.0.0.0
Отметка времени модуля с ошибкой: 5395b20a
Код исключения: c0000005
Смещение исключения: 00012e7b
Версия ОС: 6.1.7601.2.1.0.256.1
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789
Вот код проги, вроде все должно быть правильно:
Код:
#include "stdafx.h"
#include <cstring>
#include "locale.h"
#include <cstdlib>
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
using std::ends;

int _tmain(int argc, _TCHAR* argv[])
{setlocale(0,"rus");
	int i,j,n,k;
	FILE* f = fopen("Tabl.dat","r");
	char s[10];

	char **tabl=new char*[6];
	for (i=0;i<6;i++)
		tabl[i]=new char[6];

	int **str=new int*[10];
	for (n=0;n<10;n++)
		str[n]=new int[2];
	
	for (i=0;i<6;i++)//чтение таблицы из файла
	{
		for (j=0;j<6;j++)
			tabl[i][j]=fgetc(f);
		fgetc(f);
	}

	cout<<"Введите слово\n";
	cin>>s;
	k=0;
	
	for (i=0;i<6;i++)//сравнение строки с таблицей посимвольно
	{
		for (j=0;j<6;j++)
		{
			for(n=0;n<10;n++)
			{
				if(tabl[0][j]==s[n]) 
				{
					str[k][0]=0;
					str[k][1]=0;
					k++;
				}
				else
				{
					str[k][0]=9;
					str[k][1]=9;
					k++;
				}
			}
		}
	}
			
	for(i=0;i<10;i++)
	{
		cout<<str[i][0]<<ends<<str[i][1]<<endl;
	}
	system("pause");
	return 0;
}
Ошибка пропадает если убрать любой из циклов и else (либо 2 цикла), но и прога делает не все что надо.
Например:
Код:
//for (i=0;i<6;i++)//сравнение строки с таблицей посимвольно
	{
		for (j=0;j<6;j++)
		{
			for(n=0;n<10;n++)
			{
				if(tabl[0][j]==s[n]) 
				{
					str[k][0]=0;
					str[k][1]=0;
					k++;
				}
				/*else
				{
					str[k][0]=9;
					str[k][1]=9;
					k++;
				}*/
			}
		}
	}
В чем может быть проблема и как исправить?

Последний раз редактировалось Stilet; 09.06.2014 в 17:27.
халява вне форума Ответить с цитированием
Старый 09.06.2014, 17:59   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

запустите под отладкой и трассируйте.
и ошибка у вас при выполнении, а не при компиляции.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.06.2014, 21:42   #3
халява
 
Регистрация: 02.04.2014
Сообщений: 7
По умолчанию

Нашел ошибку
if(tabl[i][j]==s[n])
{
str[k][0]=i;
str[k][1]=j;
k++;
}
else
{
str[k][0]=0;
str[k][1]=0;
k++;
}

После многократных проходов по циклам k становилась намного больше чем размер массива(10).

for(n=0;n<10;n++)//сравнение строки с таблицей посимвольно
{
for (i=0;i<6;i++)
{
for (j=0;j<6;j++)
{
if(s[n]==tabl[i][j])
{
str[n][0]=i;
str[n][1]=j;
break;
}
else
{
str[n][0]=0;
str[n][1]=0;
}
}
}
}
только надо добавить проверку "если буква найдена - перейти к следующей", чтобы не сверять дальше с массивом.
халява вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кодирование VS2010 c++ alexlagunov Помощь студентам 0 28.04.2014 03:04
ASM в VS2010 Berlioz Помощь студентам 4 17.08.2012 11:41
Ошибка VS2010 AlexZZZ2010 Общие вопросы .NET 1 22.09.2011 13:40
проблема в VS2010 Form_13 Помощь студентам 4 26.07.2011 03:26
Окна в VS2010 ? denes Общие вопросы C/C++ 0 13.11.2010 16:33