Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти число по известным остаткам деления его на 3, 5 и 7 http://www.cyberforum.ru/cpp-beginners/thread3063.html
2 дня как начал заниматься, помогите, пожайлуста Задумано целое число x. Известы числа к, т и п-остатки от деления этого числа на 3, 5 и 7 соответственно. Найти x. Как его нжно найти? я понимаю, я, наверное, ламер и задачка о4 простая, но все же..
C++ задача...помогите,кто может Определить D и M -- дату К-го по счету дня високосного года. Месяц вывести числом и в словесной форме. http://www.cyberforum.ru/cpp-beginners/thread3033.html
C++ Шифровка текста
Люди помогите вот код приблежённо тут только нету ввода данных! Как организовать тут водд данных?? #include <iostream> #include <stdio.h> const int n = 10; typedef char sType; typedef sType matrix; const matrix mask = { "xxxxx.....", "xxxxx.....",
Помогите разобраться с побитовыми операциями C++
А точнее как с помощью только побитовых операций и операции сложения проверить делиться ли число a (unsigned char a) на 3? Заранее спасибо.
C++ Ввод списка записей http://www.cyberforum.ru/cpp-beginners/thread2958.html
Нужно разработать программу, в которой осуществляется ....... ЗАРАНЕЕ ОГРОМНОЕ СПАСИБО!!))
C++ Вычисление таблицы длины окружности начиная от значения радиуса R0 до Rn с шагом Rs 1.Составить программу циклического вычисления таблицы длины окружности начиная от значения радиуса R0 до Rn с шагом Rs. Значения R0, Rn, Rs вводить с клавиатуры (все вещественного типа). Предусмотреть анализ всей введенной информации на ошибки. Программа должна работать циклически и в качестве выхода из цикла использовать условие R0=0. Внешний цикл(программа): for Внутренний цикл (таблица) :... подробнее

Показать сообщение отдельно
Гость
Сообщений: n/a

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

06.10.2007, 19:33. Просмотров 1225. Ответов 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++ ,плиз помогите,подскажите что нужно изменить или доделайте до работоспособности проги,плиз
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru