Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный хостинг на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Гаряка Асмик
Статус: Специалист
Рейтинг: 2978
∙ повысить рейтинг »
lamed
Статус: Практикант
Рейтинг: 2202
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 1913
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / C/C++

Номер выпуска:1507
Дата выхода:01.04.2010, 21:00
Администратор рассылки:Verena, Профессионал
Подписчиков / экспертов:641 / 196
Вопросов / ответов:1 / 1
IRC-канал по теме:#C

Вопрос № 177491: Необходимо написать программу: 1) Программа считывает текст из файла и выводит на экран только слова, состоящие из заданного количества букв. 2) Сформировать из текста словарь (сортировка по алфавиту). Реализовать возможность дополнения словаря...



Вопрос № 177491:

Необходимо написать программу:
1) Программа считывает текст из файла и выводит на экран только слова, состоящие из заданного количества букв.
2) Сформировать из текста словарь (сортировка по алфавиту). Реализовать возможность дополнения словаря из других файлов
3) Реализовать возможность поиска по словарю, дополнение словаря отдельными словами.

Буду благодарен, если хоть чем-нибудь поможете. Желательно, чтобы работало в VS2008.

Отправлен: 27.03.2010, 19:46
Вопрос задал: atomi, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает vladisslav, 5-й класс :
Здравствуйте, atomi.
1) Программа считывает текст из файла и выводит на экран только слова, состоящие из заданного количества букв.
Код:
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <string.h>


int main(int argc, char **argv)
{
if(argc!=3)
{
fprintf(stderr,"Use %s filename wordlen\n",argv[0]);
exit(1);
};
int fd=open(argv[1],O_RDONLY);
if(fd==-1)
{
fprintf(stderr,"Failed to open file: %s\n",argv[1]);
exit(1);
};

int len=0;
if(sscanf(argv[2],"%d",&len)!=1)
{
fprintf(stderr,"Use %s filename wordlen\n",argv[0]);
exit(1);
};

char buffer[256];
memset(&buffer ,0,sizeof(buffer));
int ptr=0;
char c=0;
int matched=1;

while(1)
{
if(read(fd,&c,1)!=1)
{
exit(0);
};
matched=1;
if((c>='a' && c<='z')||(c>='A' && c<='Z'))
{
buffer[ptr]=c;
ptr++;
matched=0;
};
if(ptr==len && matched)
{
printf("%s\n",&buffer[0]);
};
if(ptr==256)
{
fprintf(stderr,"Buffer overflow\n");
memset(&buffer,0,sizeof(buffer));
ptr=0;
};
if(matched && ptr>0)
{
memset(&buffer,0,sizeof(buffer));
ptr=0;
}
}
return 0;
};


Во вложении
2) Сформировать из текста словарь (сортировка по алфавиту). Реализовать возможность дополнения словаря из других файлов
3) Реализовать возможность поиска по словарю, дополнение словаря отдельными словами.

Если будут проблемы при сборке/запуске, пишите, попробую исправит ь.

Приложение:

Ответ отправил: vladisslav, 5-й класс
Ответ отправлен: 30.03.2010, 16:44
Номер ответа: 260471

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 260471 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.14 от 03.03.2010

    В избранное