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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2010, 00:00   #1
RZMTZM
Пользователь
 
Регистрация: 10.12.2009
Сообщений: 22
По умолчанию (СИ)непонятная ошибка.

Доброй ночи, товарищи форумчане! Написал курсовик, точнее продумал алгоритм и функции. Код написал, НО вылезает непонятная мне ошибка
declaration syntax error. Код привожу. Скорее всего это из-за моих плохих познаниях в прототипах или еще где-то. Прошу помощи, ибо завтра нужно нести...
Код:
#include <stdio.h>
#include <conio.h>
#include <alloc.h>
#include <iostream.h>
#include <string.h>

char vvod(char);
void vyvod(char);/*здесь ошибка*/
int minimal(char, char);
int kol_slov(char, char);
char replace_main(char, char, char, int);
char replace(char, char, int, int);

void main(void)
{
	int i, j, min, n, m, kol_strok;
	char *new_word, **text, **new_text, *razd;
	clrscr();
	printf("BBeguTe KoJIu4ecTBo cTpoK");
	scanf("%d", &kol_strok);
	text=(char**)malloc(kol_strok*sizeof(char*));
	for(i=0; i<kol_strok; i++)
		text[i]=(char*)malloc(sizeof(char));
	printf("nocTpo4Ho BBeguTe TeKcT");
	for(i=0; i<kol_strok; i++)
		*text[i]=vvod(*text[i]);
	printf("BBeguTe cuMBoJIbI-pa3geJIuTeJIu");
	razd=(char*)malloc(sizeof(char));
	j=1;
	*razd=vvod(*razd);
	new_text=(char**)malloc(kol_strok*sizeof(char*));
	for(i=j=0; j<kol_strok; j++)
	{
		n=kol_slov(*text[j], *razd);
		n=n%2;
		if(n%2!=0)
		{
			new_text[i]=(char*)malloc(strlen(text[j])*sizeof(char));
			strcpy(new_text[i], text[j]);
			i++;
		}
	}
	for(j=0; j<=i; j++)
	{
		min=minimal(*new_text[j], *razd);
		*new_text[j]=replace_main(*new_text[j], *razd, *new_word, min);
        }
	printf("\nucxogHbIu TeKcT\n");
	vyvod(**text);
	printf("\nnpeo6pa3oBaHHbIu TeKcT\n");
	vyvod(**new_text);
}

int kol_slov(char *t, char *r)
{
int i=0, j=0, k=0, l=0, ks=0;

	k=strlen(r);
	do
	{
		j=0;
		while(j<k)
		     {
			if(t[i]!=r[j])
				j++;
			else
				break;
		}
		if(i==k)
		{
			l++;
			if(t[i+1]=='\0')
				ks++;
		}
		else
		{
			if(l!=0)
			{
				ks++;
				l=0;
			}

		}
		i++;
		}
	while(t[i]!='\0');
	return ks;
}

int minimal(char *d, char *e)
{
	int i=0, j=0, k=0, l=0, minim=0;
	k=strlen(e);
	do
	{
		j=0;
		while(j<k)
		{
			if(d[i]!=e[j])
				j++;
			else
				break;
		}
		if(j==k)
		{
			l++;
			if(d[i+1]=='\0'&&l<minim)
				minim=l;
		}
		else
		{
			if(minim>l&&l!=0||minim==0)
				minim=l;
			l=0;
		}
		i++;
	}
	while(d[i]!='\0');
	return minim;
}

char* vvod(char*x)
{
	int j;
	char b;
	b=' ';
	while(b!='\n')
	{
		b=getchar();
		x=(char*)realloc(x, (j+1)*sizeof(char));
		if(b!='\n')
		{
			x[j]=b;
			j++;
		}
		else
			x[j]='\0';
	}
	return x;
}

char* replace_main(char*t, char*s, char*w, int lm)
{
	int i=0, j=0, l=0, n=0, x=0;
	n=strlen(s);
	x=strlen(w);
	do
	{
		j=0;
		while(j<n)
		{
			if(t[i]!=s[j])
				j++;
			else
				break;
		}
		if(j==n)
		{
			l++;
			if(t[i+1]=='\0'&&l==lm)
				*t=replace(*t, *w, lm, i);
		}
		else
		{
			if(l==lm)
			{
				*t=replace(*t, *w, lm, i);
				i=i+x-lm-1;
			}
			l=0;
		}
		i++;
	}
	while(t[i]!='\0');
	return t;
}

void vyvod(char **m, int n)
{
	int i, j;
	for(i=0; i<n; i++)
	{
		puts(m[i]);
		free(m[i]);
	}
	free(m);
}

char* replace(char* string, char*word, int min_l, int z)
{
	int i=0, j=0, b=0, a=0, c=0;
	j=b=strlen(string);
	c=strlen(word);
	if(c>min_l)
	{
		a=c-min_l;
		string=(char*)realloc(string, (strlen(string)+a)*sizeof(char));
		while(j!=z)
		{
			string[j+a]=string[b];
			j--;
		}
	}
	else
	{
		a=min_l-c;
		for(j=i+1; string[j]!='\0'; j++)
			string[j]=string[j+a];
		string=(char*)realloc(string, (strlen(string)-a)*sizeof(char));
	}
	z=z-min_l+1;
	for(j=0; word[j]!='\0'; i++, j++)
		string[z]=word[j];
	return string;
}

Последний раз редактировалось RZMTZM; 03.02.2010 в 01:43.
RZMTZM вне форума Ответить с цитированием
Старый 03.02.2010, 00:01   #2
Namolem
Oo
Форумчанин
 
Аватар для Namolem
 
Регистрация: 10.10.2009
Сообщений: 350
По умолчанию

declatartion syntax error сначит что вы неправильно объявили чтото
скопируйте строчку с ошибкой сюда


скорее всего изза
char vvod(char);
тут функция возвращает символ, а в коде возвращает указатель на строку. И остальные

Последний раз редактировалось Namolem; 03.02.2010 в 00:04.
Namolem вне форума Ответить с цитированием
Старый 03.02.2010, 00:52   #3
RZMTZM
Пользователь
 
Регистрация: 10.12.2009
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Namolem Посмотреть сообщение
declatartion syntax error сначит что вы неправильно объявили чтото
скопируйте строчку с ошибкой сюда


скорее всего изза
char vvod(char);
тут функция возвращает символ, а в коде возвращает указатель на строку. И остальные
Не вышло. Обидно=(
RZMTZM вне форума Ответить с цитированием
Старый 03.02.2010, 01:16   #4
Namolem
Oo
Форумчанин
 
Аватар для Namolem
 
Регистрация: 10.10.2009
Сообщений: 350
По умолчанию

1 1

Последний раз редактировалось Namolem; 03.02.2010 в 01:24.
Namolem вне форума Ответить с цитированием
Старый 03.02.2010, 01:38   #5
RZMTZM
Пользователь
 
Регистрация: 10.12.2009
Сообщений: 22
По умолчанию

ошибка в этой строке
Код:
void vyvod(char);
Насколько я понял, после прототипов е нужны точки с запятой. Но, убрав их, ошибка не пропала и, когда я в прототипах подправил char на char*, тоже. Блин, я просто не знаю что делать.
RZMTZM вне форума Ответить с цитированием
Старый 03.02.2010, 02:09   #6
liljon
Форумчанин
 
Регистрация: 03.01.2010
Сообщений: 229
По умолчанию

Это
Код:
char vvod(char);
void vyvod(char);/*здесь ошибка*/
int minimal(char, char);
int kol_slov(char, char);
char replace_main(char, char, char, int);
char replace(char, char, int, int);
замените на ЭТО

Код:
char* vvod(char*x);
void vyvod(char **m, int n);
char* replace(char* string, char*word, int min_l, int z);
void vyvod(char **m, int n);
char* replace_main(char*t, char*s, char*w, int lm);
int minimal(char *d, char *e);
int kol_slov(char *t, char *r);
подпись
liljon вне форума Ответить с цитированием
Старый 04.02.2010, 02:25   #7
RZMTZM
Пользователь
 
Регистрация: 10.12.2009
Сообщений: 22
По умолчанию

Ух, я понял прикол) много звездочек) и код неправильный кое-где) Но всем спасибо за помощь!
RZMTZM вне форума Ответить с цитированием
Старый 04.02.2010, 02:49   #8
Namolem
Oo
Форумчанин
 
Аватар для Namolem
 
Регистрация: 10.10.2009
Сообщений: 350
По умолчанию

забавно
попробовал запустить тот код на билдере
он выдал declaration syntax error, но в файлах exception и new
теперь он после перезагрузки и в новом проекте выдает те же ошибки (в HelloWorld программе)
Namolem вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
непонятная ошибка Bat{CMD}_Men Общие вопросы Delphi 3 13.01.2010 17:54
Непонятная ошибка Дырдин Общие вопросы C/C++ 7 14.10.2009 21:30
Непонятная ошибка. jojahti Общие вопросы C/C++ 4 05.09.2009 20:39
Непонятная ошибка. program123 Общие вопросы Delphi 12 12.04.2009 23:07
Непонятная ошибка Juri Помощь студентам 6 07.11.2008 19:28