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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
}{NiM
64 / 64 / 2
Регистрация: 25.11.2009
Сообщений: 283
#1

строки. - C++

10.01.2011, 15:43. Просмотров 572. Ответов 0
Метки нет (Все метки)

Вводится последо-вательность строк символов не длиннее 40 символов. Допустимые символы в строке - русские буквы и пробел. Окончание входного потока - ввод строки, начинающейся с символа "*". Максималь-ное количество строк равно 5. Затем выделяются отдельные слова - последовательности букв, разделенных пробелами. Из исходных слов формируются их сокращения путем удаления гласных букв, например: "ПРОЦЕНТ" -> "ПРЦНТ". Формируется также стати-стическая информация. Примерный вид выходной информации:
Входной текст:
(последовательность входных строк, в каждой строке
удалены все лишние пробелы)
Введено К строк, максимальная длина слова М символов.
Получены сокращения:
(последовательность строк с сокращениями, в каждой
строке удалены все лишние пробелы).
Максимальная длина сокращения С символов.
Встретилось "а" N1 раз.
...
Встретилось "я" N9 раз.
УКАЗАНИЯ: Предусмотреть обработку ошибочных си-туаций и легкую замену в тексте программы числовых и сим-вольных констант. Вывод входных и выходных строк проводить ЗАГЛАВНЫМИ буквами.
РАЗВИТИЕ:
1. Предусмотреть режимы ввода/вывода: только экран и клавиа-тура, ввод из текстового файла и вывод в текстовый файл с отображением диалога на экране.
2. Предусмотреть два режима работы: РУССКИЙ и АНГЛИЙ-СКИЙ. В начале пользователь выбирает язык входных и вы-ходных строк. В режиме РУССКИЙ работа описана выше. В режиме АНГЛИЙСКИЙ используются латинские буквы и со-ответствующие гласные.
Делал так -
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
///---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include <tchar.h>
//---------------------------------------------------------------------------
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
char inform[10], eng[10]={"AEOUY"},rus[10]={"АЕИОУЭЮЯ"};
int colform[10]={0,0,0,0,0,0,0,0,0,0};
printf("Выберите язык - русский(1) английский(2)\n");
int cases;
scanf("%i",&cases);
if (cases=2) {
for (int t; t < strlen(eng); t++) {
inform[t]=eng[t];
}
}else{
for (int t; t < strlen(rus); t++) {
inform[t]=rus[t];
}}
int i=-1,max=0;
    char s[6][41];
printf("Выберите ввод - файл(1) клава(2)\n");
scanf("%i",&cases);
if (cases==2) {
printf("Вводите строки\n");
    char temp;
    do{
    i++;
    gets(s[i]);
    max=max>strlen(s[i])?max:strlen(s[i]);
    temp=s[i][0];
    }while (temp!='*');
    }else{
        FILE *file;
         printf("Введите полный путь к файлу(если он хранится в том же каталоге, что и программа, введите только название файла)\n");
         char *path;
         cscanf("%s",&path);
         file = fopen( path, "rt" );
         if (file!=0) {
         char temp;
         do{
             i++;
             fgets(s[i],40,file);
             max=max>strlen(s[i])?max:strlen(s[i]);
             temp=s[i][0];
         }while (temp!='*');
         }  }
            int col=i+1;
    for (int j=1; j <col; j++) {
    char p[41]={},pp[41]={};
    strcpy(p,s[j]);
    i=0;
    int prcol=0;
    while (i<strlen(p)) {
    prcol=0;
    if (p[i]==' ') {
    prcol++;
    if (prcol=1) {
     strcat(pp,(char *)p[i]);
    }
    i++;
    }else{ strcpy(pp,(char *)p[i]);
    i++;  }
    }
    puts(pp);
        printf("\n");
    strcpy(s[j],pp);
    }
    printf("ВВЕДЕНО %i СТРОК. МАКСИМАЛЬНАЯ ДЛИНА %i СИМВОЛОВ\n",col,max);
    int ns=0;
    int c;
    max=0;
    for (int j=1; j <col; j++) {
    char p[41]={},pp[41]={};
    strcpy(p,s[j]);
    i=0;
    while (i<strlen(p)) {
    if (p[i]==' ') {i++;
    }else
    { ns=i; c=0;
    while (p[i]!=' '){
    char *last=strrchr(inform,p[i]);
    int coun=last-inform;
    if (coun<=0) {
    max=max>c?max:c;
     c=0;
    strcat(pp,(char *)p[i]);
    } else {colform[coun]++;}
    i++;
    c++;
    }
    }}
    puts(pp);
    printf("\n");
}
    printf("Максимальная длина сокращений %i\n",max);
    for (int k; k < strlen(inform); k++) {
    printf("Встретилось %c %i раз",inform[k],colform[k]);
    }
 
    return 0;
}
//---------------------------------------------------------------------------
В Си сравнительно недавно начал работать Можете объяснить где ошибки???? и как исправить???
(с выводом в файл потом сделаю. если есть время объясните где пробелы в коде))
Заранее благодарю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2011, 15:43     строки.
Посмотрите здесь:

C++ Поменять местами максимальный элемент каждой строки с первым элементом соответствующей строки

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

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

Текущее время: 04:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru