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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2007, 15:03   #1
riptror
Новичок
Джуниор
 
Регистрация: 20.11.2007
Сообщений: 1
Восклицание программа на си по обработке строки

Помогите кто может написать программу на си которая получает от пользователя строку слов разделённой пробелами и табуляцией нужно эту строку обработать так чтобы между словами оставить только один пробел и раставить слова в алфавитном порядке и вывести на экран

вот часть кода который у меня шас есть

Цитата:
#include <stdio.h>
#include <string.h>


int words (char *from,char *to)
{
//char *from=buf ,*to=buf;
int l,k ;
k=0;l=0;

strcat(from," ");
*to='\0';
while(*(from+=strspn(from," \t")))
{
strncat(to,from,strcspn(from," \t"));
from=strpbrk(from," \t");
*to=' ';
k++;
}return k;}
//k++;
//l=strspn(from," \t");
//if (!l)
// *to++=l;
// *from=*to;
// while (l-->0)
// *to++=*from++;
// *to++=' ';
//}
//*to='\0';
//return k;
//}

/* int spase(char buf[])
{ char *from=buf;
for (;*from=" "|| *from=='/t';*from++);
return from;
}*/
int swop(char buf[],int l)
{
int i,k,n;
char *p ;
int tmp[80];
for (i=0;*buf+=strspn(buf," \t") && i<l;i++,buf+=strcspn(buf," \t"));
if (!*buf) return 0;
n=strspn(buf," \t");
p=buf+n+strspn(buf+n," \t");
if (!*p) return 0;
k=strcspn(buf," \t");
i=strncmp(buf,p,k);
if(i>0 || !i && n>k)
{
strncpy(tmp,buf,n+1);
for(i=0;i<=k;i++) buf[i]=p[i];
strncpy(p+k-n,tmp,n+1);
return 1;}
return 0;
}
int main()
{
char buf[80],buf2[80];
int i,n,j;
i=0;j=0;n=0;
while (printf("enter string "), gets(buf))
{
//spase(buf);
n=words(buf,buf2);
for (i=1;i<n;i++)
for(j=0;j<n-1;j++)
swop(buf2,j);
printf("%s\n",buf2);
}return 0;
}
как задумывалось в первой функции должны удалятся лишнии пробелы и символы табуляци и фозвращать значение равное количеству строк
на данный момент она пока только удаляет пробелыи табуляцию.
вторая функция уже должна раставлять слава ф алфавитном порядке не знаю работает ли она правильно

можете если не трудно исправить эту или написсать свою
riptror вне форума Ответить с цитированием
Старый 20.11.2007, 20:54   #2
SalasAndriy
Форумчанин Подтвердите свой е-майл
 
Аватар для SalasAndriy
 
Регистрация: 01.11.2007
Сообщений: 157
По умолчанию

Пройди по этому адресу http://www.programmersforum.ru/showthread.php?t=8462 не знаю может поможет чуть-чуть.
SalasAndriy вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27
Строки. Программа в Delphi7 Настена Помощь студентам 3 09.01.2008 12:33
Строки. Mr.User Помощь студентам 11 08.12.2007 07:00
Процедуры по обработке изображений. AidarBik Общие вопросы Delphi 7 08.10.2007 12:50
как вывести строку поочередно сначала первая буква первой строки потом первая буква второй строки и т.д. vitalik007 Помощь студентам 1 25.09.2007 20:45