Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Гость

Помогите с доработкой

06.10.2007, 19:33. Показов 1805. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание
Составить программу обработки текста, считываемого из файла. Для чего разработать функцию для обработки текста с переменным числом параметров, в качестве параметров она должна принимать значения текстовых предложений (разделитель - .), строк (разделитель - \n) или слов (разделитель – пробел или . , ! ? \n) (по варианту задания) для обработки и возвращать указатель на обработанный текст. В качестве первого параметра – имя функции (указатель), используемой для перевода символов из одного формата в другой, которую определить ниже по тексту программы. Данная функция должна вызываться через переданный указатель и принимать обрабатываемый(-ые) символ(ы), возвращая результирующий. Обработанный текст вывести в результирующий файл. В отчете привести исходный и обработанный текст.
Функция с переменным числом параметров получает: слова
Функция обработки символа:Слова – с загл. буквы

Вот код,который я пытался сделать...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
char* cCharProcessing(char* cInput);
 
char** ppcStringProcessing(char* (*f)(char *cInput), ...)
{
  va_list apList;
  int iStrCount, iStrMaxCharCount, i, j;
  char** ppcText;
  va_start(apList, f);                              /* Извлечение   */
  iStrCount = va_arg(apList,int);                   /* аргументов   */
  iStrMaxCharCount = va_arg(apList,int);
  ppcText = va_arg(apList,char**);
  for(i = 0;i < iStrCount;i++)
  {
 
  char* cChar=new char[iStrMaxCharCount];
  strcpy(cChar,ppcText[i]);            /* Обработка    */
  strcpy(cChar,f(cChar));
  strcpy(ppcText[i],cChar);
  }
  return ppcText;
}
 
#pragma argsused
int main(int argc, char* argv[])
{
   FILE *fileIn, *fileOut;                           /* Объявл.файлы */
                                                     /* Счетчики=0   */
   int iCharCount = 0, iStrMaxCharCount = 0, iStrCount = 0, i = 0, j = 0;
   char **ppcText;
   fileIn = fopen("Input.txt", "rt");                /* Открытие Вх. */
   if (fileIn == NULL)  {                            /* Удачно?      */
      fprintf(stderr, "Cannot open input file.\n");  /* нет- Ошибка  */
      return 1;                                      /*      Возврат */
   }
   fileOut = fopen("Output.txt", "wt");              /* Открытие Вых.*/
   if (fileOut == NULL) {                            /* Удачно?      */
      fclose(fileIn);                                /* нет- Закр.Вх.*/
      fprintf(stderr, "Cannot open output file.\n"); /*      Ошибка  */
      return 1;                                      /*      Возврат */
   }
   while (!feof(fileIn)) {                           /* Цикл подсчета*/
      int iChar = fgetc(fileIn);                     /* Чтение символ*/
      if(    iChar == '\n' || iChar == '\r' 
          || iChar==' '||iChar=='!'||iChar=='?'||iChar==','||iChar=='.') 
      {                                              /* Подсчет      */
       if(iCharCount > iStrMaxCharCount) iStrMaxCharCount = iCharCount;
       iCharCount = 0;
       if(iChar == '\n' || iChar == '\r' 
          || iChar==' '||iChar=='!'||iChar=='?'||iChar==','||iChar=='.') iStrCount++;
      } else iCharCount++;
   }
   iStrCount++;
   ppcText = malloc(sizeof(char*)*iStrCount);               
   if (ppcText == NULL)  {                           /* Удачно?      */
      fprintf(stderr, "Cannot allocate memory.\n");  /* нет- Ошибка  */
      fclose(fileIn);                                /* Закрытие Вх. */
      fclose(fileOut);                               /* Закрытие Вых.*/
      return 1;                                      /*      Возврат */
   }
   for(i=0;i<iStrCount;i++) {
      ppcText[i] = malloc(sizeof(char)*iStrMaxCharCount);
      if (ppcText[i] == NULL)  {                     /* Удачно?      */
         fprintf(stderr, "Cannot allocate memory.\n");/* нет- Ошибка  */
         for(j = 0;j < i;j++)                        /*Освобождаем   */
             free(ppcText[j]);                       /*память        */
         fclose(fileIn);                             /* Закрытие Вх. */
         fclose(fileOut);                            /* Закрытие Вых.*/
         return 1;                                   /*      Возврат */
      }
   }
   fseek(fileIn,0,SEEK_SET);
   iStrCount = 0;
   iCharCount = 0;
   while (!feof(fileIn)) {                           /* Цикл чтения  */
      char iChar = fgetc(fileIn);                     /* Чтение символ*/
      if(!(iChar == '\n' || iChar == '\r' 
          || iChar==' '||iChar=='!'||iChar=='?'||iChar==','||iChar=='.'))
            ppcText[iStrCount][iCharCount++] = iChar;
      if(iChar == '\n' || iChar == '\r' 
          || iChar==' '||iChar=='!'||iChar=='?'||iChar==','||iChar=='.') {           /* Новая строка */
       if(iCharCount > iStrMaxCharCount) iStrMaxCharCount = iCharCount;
       ppcText[iStrCount][iCharCount++] = '\0';
       iCharCount = 0;
       if(iChar == '\n' || iChar == '\r' 
          || iChar==' '||iChar=='!'||iChar=='?'||iChar==','||iChar=='.') iStrCount++;
      }
   }
   iStrCount++;
   ppcStringProcessing(cCharProcessing,iStrCount,iStrMaxCharCount,ppcText);
   for(i = 0;i < iStrCount;i++)
   {
      for(j = 0;j < iStrMaxCharCount && ppcText[i][j];j++)
           fputc(ppcText[i][j], fileOut);
      fputc(' ',fileOut);
   }                                                 /* Вывод        */
   for(i = 0;i < iStrCount;i++)                      /*Освобождаем   */
             free(ppcText[i]);                       /*память        */
   free(ppcText);
   fclose(fileIn);                                   /* Закрытие Вх. */
   fclose(fileOut);                                  /* Закрытие Вых.*/
   fprintf(stdout, "All OK!\n");
 
   system("PAUSE"); 
   return 0;                                         /* Выход        */
}
 
char* cCharProcessing(char *cInput)
{
   if(cInput[0] >= 'а' && cInput[0] <= 'я')
      cInput[0]=cInput[0] - 32;
   else return cInput;
}
Код делал на Dev C++ ,плиз помогите,подскажите что нужно изменить или доделайте до работоспособности проги,плиз
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.10.2007, 19:33
Ответы с готовыми решениями:

Помогите пожалуйста с доработкой кода
Кода такого плана: &lt;script type=&quot;text/javascript&quot;&gt;// &lt;!]&gt;&lt;/script&gt; &lt;p&gt;&lt;a href=&quot;#&quot; onclick=&quot;look('div1'); return...

Создание нового модального окна с доработкой и привязкой к событию
Помогите пожалуйста на данном примере хотелось бы реализовать следущее: Чтобы после нажатия на кнопку закрыть всплывало диалоговое...

Стоимость интернет магазина на основе стандартного CMS с доработкой дизайна и функциональности
Интересует сколько стоит установка на хосте интернет магазина на основе одного из стандартного CMS, которых конечно много, доработка...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.10.2007, 19:33
Помогаю со студенческими работами здесь

Создать генератор паролей на основе созданного класса PassGen с доработкой класса Main
Как доработать генератор паролей в классе Main на основе созданного класса PassGen? PassGen готовый: PassGen.java ...

ЛЮДИ ДОБРЫЕ КОЛЛЕГИ!!! ПОМОГИТЕ, ГОРЮ С КУРСОВЫМ((( ПОМОГИТЕ
ТЕМА: КОНВЕРТОР С ПАРАЛЛЕЛЬНЫМ КЛЮЧЕВЫМ ЭЛЕМЕНТОМ! СЧИТАЮ ПО ТОПОЛОГИИ SEPIC, по схеме Кука! Методика расчёта преобразователя, собранного...

Холодильник Samsung помогите опознать модель, помогите опознать модель, все шильдики ободраны
Собственно имеем холодильник без опознавательных знаков, ничего не могу про него прочитать поскольку не знаю модель. Дефект не холодит....

Холодильник ARDO COF2510SAC помогите опознать бабах, Ребята помогите опознать БАБАХ
Привет уважаемуму сообществу! Ребята помогите опознать БАБАХ, выгорел в прах варистор и R25,у зака выгорел еще охранный комплекс, по ходу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru