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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2009, 10:23   #1
Lunex.08
Форумчанин
 
Аватар для Lunex.08
 
Регистрация: 25.02.2009
Сообщений: 145
По умолчанию Компилируется,но не выполняется.

Добрый день.
Проблема в следующем коде:
Код:
#include <iostream.h>
#include <cstring>
char ctroka (char *word)
{
	char predl [1000];
	char slovo [1000];
	int col_sl,q;
	char *max [1000];
	char *maximum;
	int x=0;

	strcpy (predl,word);
	cout << predl << "\n";

	for (int i=1;i<=1000;i++)
	{
		if (predl [i]=='_')
		{
			predl [i]=' ';
			col_sl++;
		}
	}
	cout << "Small correct\n" << predl;

	for (q=0;q<1000;q++)
	{
	slovo [q]=predl [q];
		if (q==' ')
		{
			max [x]=slovo;
			max [x++];
			slovo [0];
		}
	}
	for (int b=1000;b>=1;b--)
	  for (int a=1;a<1000;a++)
		{
			if (max [a]<max[a+1])
			{
				maximum=max[a+1];	
			}
		}
		cout << maximum;
			return 'u';
}

int main ()
{
	ctroka ("privet_kak_dela_horosho_kak_ti");
	int i;
	cin >> i;
return 0;
}
Программа компилируется,но после выскакивает ошибка,связанная с памятью,потом предлагается ввести путь двум файлам.
З.Ы.Никогда не дружил с указателлями.Но тут просто решил их вспомнить,хотя ,как видно, несовсем корректно.
Компьютеры бесподобны: за несколько минут они могут совершить такую грандиозную ошибку, какую не в состоянии сделать множество людей за многие месяцы.

Последний раз редактировалось Sazary; 08.11.2009 в 19:21.
Lunex.08 вне форума Ответить с цитированием
Старый 07.11.2009, 10:51   #2
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

На c++ builder написано или где?
VintProg вне форума Ответить с цитированием
Старый 07.11.2009, 11:07   #3
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
for (int i=1;i<=1000;i++)
вы думаете, что в строке predl будет 1000 символов? индексация начинается с 0
определите сначала длину этой строки и задайте цикл так

Код:
int len=strlen(predl);
for (int i=0;i<len;i++)
или так

Код:
for (int i=0;predl[i]!='\0';i++)
counter вне форума Ответить с цитированием
Старый 07.11.2009, 11:10   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Код:
#include <iostream.h>
#include <cstring>
char ctroka (char *word)
{
	char predl [1000];
	char slovo [1000];
	int col_sl,q;
	char *max [1000];
	char *maximum;
	int x=0;

	strcpy (predl,word);
	cout << predl << "\n";

	for (int i=0;i<1000;i++)
	{
		if (predl [i]=='_')
		{
			predl [i]=' ';
			col_sl++;
		}
	}
	cout << "Small correct\n" << predl;

	for (q=0;q<1000;q++)
	{
	slovo [q]=predl [q];
		if (q==' ') // q - индекс элемента. зачем его сравнивать с кодом пробела?
		{
			/*max [x]=slovo;
			max [x++];*/
			max [x++]=slovo;
			slovo [0]; // Какой в этом смысл?
		}
	}
	for (int b=1000;b>=1;b--)
	  for (int a=0;a<1000;a++)
		{
			if (max [a]<max[a+1])
			{
				maximum=max[a+1];	
			}
		}
		cout << maximum;
			return 'u';
}

int main ()
{
	ctroka ("privet_kak_dela_horosho_kak_ti");
	int i;
	cin >> i;
return 0;
}
Это я чисто по ошибкам синтаксическим пробежался, но что-то мне подсказывает, что там и других куча. Если ничего не пропустил, то вылетать программа не будет, но и работать, наверно, будет неправильно. Хотя как знать...
Да. Действительно там лучше цикл сделать не до 1000, а до нулевого символа
pu4koff вне форума Ответить с цитированием
Старый 07.11.2009, 14:27   #5
Lunex.08
Форумчанин
 
Аватар для Lunex.08
 
Регистрация: 25.02.2009
Сообщений: 145
По умолчанию

Цитата:
На c++ builder написано или где?
На Microsoft Visual C++ 6.
Цитата:
вы думаете, что в строке predl будет 1000 символов?
Да,в этом я ошибся...
Цитата:
Если ничего не пропустил, то вылетать программа не будет
К сожалению вылетает...
Мдяяяя....Все,по-жесткому буду мутузить указатели.Попробую прогу под массивы переделать.Спасибо за отклики.

Сорри за новую раскрутку темы,но вот спустя столько времени решил помутузить опять эту прогу.Переделал ее немного,но так и продолжает вылетать ошибка памяти.Проверял-перепроверял, на разных компиляторах компилировал и все равно в толк не возьму в чем дело

Код:
Код:
#include <iostream.h>
#include <cstring>

char ctroka (char *word)
{
	char slovo [100];
	char *t;
	t=slovo;
	char slovo_proverka [100];
	int col_sl;
	int q=0;
	int i;
	int ish_p=0;
	int y;
		
	cout << word;
	for ( i=0;word [i]!='\0';i++)
	{
		if (word [i]=='_')
		{
			col_sl++;
			word [i]==' ';
		}
	}
	cout << "Small correct\n" << word;
	
	do
	{
	  	y=0;
	  	word [q++];
	  	if (word [q]==' ')
	    {
		    for (;word [ish_p]<=word [q];word [ish_p++])
		    {
		  	   	 slovo_proverka [y]=word [ish_p];
		  	   	 y++;
 		    }   	
		   ish_p++;	 
	    }
	    if (slovo>slovo_proverka)
	    {
		   		strcpy (slovo,slovo_proverka);	 
        }
   	}while (word!='\0');
   	cout << *t;
	return *t;
}

int main ()
{
	cout << ctroka ("Privet_kak_dela_horosho_ay_tebya");
	int i;
	cin >> i;
	return 0;
}
Ошибка:
Unhandled exception int fff.exe: 0xC0000005: Access Violation.

Помогите разобраться, а то уже не усну сегодня.)
Заранее спасибо за отзывы.
Компьютеры бесподобны: за несколько минут они могут совершить такую грандиозную ошибку, какую не в состоянии сделать множество людей за многие месяцы.

Последний раз редактировалось Stilet; 19.11.2009 в 10:56.
Lunex.08 вне форума Ответить с цитированием
Старый 19.11.2009, 10:28   #6
-CrAzYMaN-
 
Регистрация: 18.11.2009
Сообщений: 6
По умолчанию

char slovo [100];
char *t;
t=slovo;
вот здесь ошибка.

извиняюсь, там нет ошибки)

Код:
#include <iostream.h>
#include <cstring>

char ctroka (char *word)
{
char slovo [100];
char *t;
t=slovo;
char slovo_proverka [100];
int col_sl;
int q=0;
int i;
int ish_p=0;
int y;

cout << word;
for ( i=0;word [i]!='\0';i++)
{
if (word [i]=='_')
{
col_sl++;
word [i]==' ';
}
}
cout << "Small correct\n" << word;

do
{
y=0;
q++;
if (word [q]==' ')
{
for (;word [ish_p]<=word [q];ish_p++)
{
slovo_proverka [y]=word [ish_p];
y++;
} 
ish_p++; 
}
if (slovo>slovo_proverka)
{
strcpy (slovo,slovo_proverka); 
}
}while (word[q]!='\0'); //здесь наверное вот так
cout << *t;
return *t;
}

int main ()
{
cout << ctroka ("Privet_kak_dela_horosho_ay_tebya" );
int i;
cin >> i;
return 0;
}
вот так компилируется, запускается, и даже не выдает ошибок)

Последний раз редактировалось -CrAzYMaN-; 19.11.2009 в 11:03.
-CrAzYMaN- вне форума Ответить с цитированием
Старый 19.11.2009, 12:17   #7
Lunex.08
Форумчанин
 
Аватар для Lunex.08
 
Регистрация: 25.02.2009
Сообщений: 145
По умолчанию

Спасибо.Опрофинился на мелочах.Смотрел на старый кон минут 10,не знал что делать,а потом решил начать с чистого листа.А к тому времени уже глючить стал)
А ща вечерком посмотрел свежим взглядом на прогу....И чуть со стула не упал от ужаса!!
Компьютеры бесподобны: за несколько минут они могут совершить такую грандиозную ошибку, какую не в состоянии сделать множество людей за многие месяцы.

Последний раз редактировалось Lunex.08; 19.11.2009 в 18:11.
Lunex.08 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему выполняется дважды? MAKEDON Помощь студентам 1 17.05.2009 15:06
не выполняется второе условие if Division Общие вопросы C/C++ 5 24.12.2008 03:16
Проверить, выполняется ли неравенство x>=y>=z aleksandr_dss Помощь студентам 1 11.12.2008 10:55
Web Не выполняется CGI Sweta Помощь студентам 6 20.05.2008 09:44
Почему не выполняется запрос? chingiz БД в Delphi 2 27.05.2007 21:56