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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2010, 16:59   #1
viksen_
Новичок
Джуниор
 
Регистрация: 25.04.2010
Сообщений: 2
Вопрос строки в СИ, не могу понять в чём ошибка(

Вводится с клавиатуры предложение, проверяется сложное или нет, простым является часть предложения без запятых. Нужно поменять местами соседние простые части предложения, если оно сложное, если нет просто вывести на экран соответствующее сообщение. Нельзя использовать стандартные функции, надо разработать свои...
Вот что у меня получилось, помогите исправить чтобы работало:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define sim 1
#define com 2

int Length(char *string)
{
int i=0, c=0;
while(string[i]!=0)
{
i++;
c++;
}
return c;
}

char *copy(char *from, char *to, int length)
{
int i;
for(i=0; i<length; i++)
{
to[i]=from[i];
}
}

char *read()
{
char *output;
char tStr[255];
int tlen=0;
int f=0;
while(f==0)
{
printf("Input your sentence with a point in the end\n");
gets(tStr);
tlen=Length(tStr);
if(tlen<=1 || tlen>255)
{
printf("Error!!! You have enterred incorrect sentense, please try again\n");
}
else if(tStr[tlen-1]!='.')
{
printf("Error, no point in the end of sentence\n");
}
else
{
f=1;
}
}
output=(char*)malloc(sizeof(char)*( tlen+1));
copy(tStr, output, tlen);
output[tlen]=0;
return output;
}

char check(char *str)
{
int i=0;
while(str[i]!='\0')
{
if(str[i]==',')return com;
i++;
}
return sim;
}

char Add(char *to, char *from, int end_to, int obsh, int zapstr)
{
int l=0, m=0;
for(l=end_to; l<obsh; l++)
{
for(m=zapstr; m<obsh; m++)
{
to[l]=from[m];
}
}
}

char ch()
{
char a[255], b[255], temp[64];
int lena=0, lenb=0,lent=0, i, l=0, m=0, j=0, count=0, length=0;
char *input;
input=read();

if(check(input)==sim)
{
printf("Simple string\n");
}
else
{
printf("complicated string\n");
}
//output=read();
length=Length(input);
for(i=0; i<length; i++)
{
while(input[i]!='\0')
{
if(input[i]==',')
{
count++;
temp[j]=i;
j++;
}
else if(input[i]=='.')
{
temp[j]=i;
j++;
}
}
}
lent=Length(temp);
for(j=0; j<lent; j+=2)
{
l=temp[j];
m=temp[j+1];
for(i=0; i<j; i++)
{
copy(input, a, l);
lena=Length(a);
a[lena+1]=0;
}
for(i=0; i<j+1; i++)
{
copy(input, b, m-l);
lenb=Length(b);
b[lenb+1]=0;
}
Add(b, a, lenb, lena, length);
printf("b=%s", b);
}

}

int main()
{
ch();

return 1;
}

Последний раз редактировалось viksen_; 25.04.2010 в 17:03.
viksen_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу понять где ошибка при сортировке строки!? Dema91 Помощь студентам 1 14.04.2010 20:11
IBExpert, не могу понять что делаю не так! в чём проблема.... katia0017 SQL, базы данных 10 15.01.2010 18:33
С++ Строки, повтор слов. В чём ошибка? Estale Помощь студентам 0 09.12.2009 21:53
Не могу понять где ошибка в коде SeRhy Общие вопросы C/C++ 5 20.09.2009 13:10