Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 06.06.2013
Сообщений: 50
1

Вывести слова строки в другой текстовый файл в обратном порядке

22.10.2014, 23:00. Показов 1407. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вообщем проблема в чём, дали лабу в колледже, и не обьяснили как делать.

Задание:
Написать программу , которая считывает строку или текст (в обоих случаях длина строки не превышает 80 символов , между словами пробелы и допускаются запятой ) из текстового файла и определяет :
а ) сколько заглавных букв в этом тексте и заменяет их на маленькие (3 балла) ;
б) сколько пробелов в этом тексте (+1 балл) .

в) выводит слова строки в другой текстовый файл в обратном порядке (+1 балл)



А и Б я сделал, осталось только В но я не как не могу сделать, помогите пожалуйста
Елсли несложно напишите готовый вариант. его нужно будет пихануть между
if (RadioGroup1->ItemIndex==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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TStringList *LoadList;
String Str;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
//TStringList *LoadList = new TStringList;
//String Str;
 
if (OpenDialog1->Execute())
{
 LoadList->LoadFromFile(OpenDialog1->FileName);
}
BitBtn1->Kind=bkOK;
BitBtn1->Caption="Файл підключено";
 
 
 
//LoadList->Free();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//-----------------------------;----------------------------------------------------------------------------1 завдання
    if (RadioGroup1->ItemIndex==0) {
Memo1->Lines->Add("1 завдання");
Memo1->Lines->Add("Перероблений текст:");
int sum=0;
for (int i=0; i<LoadList->Count;i++)
{
Str = LoadList->Strings[i];
  for (int j=1; j<=Str.Length();j++)
  {
  switch (Str[j])
   {
   case 'A':{Str[j]='a'; sum=sum+1;}
   case 'B':{Str[j]='b'; sum=sum+1;}
   case 'C':{Str[j]='c'; sum=sum+1;}
   case 'D':{Str[j]='d'; sum=sum+1;}
   case 'E':{Str[j]='e'; sum=sum+1;}
   case 'F':{Str[j]='f'; sum=sum+1;}
   case 'G':{Str[j]='g'; sum=sum+1;}
   case 'H':{Str[j]='h'; sum=sum+1;}
   case 'I':{Str[j]='i'; sum=sum+1;}
   case 'J':{Str[j]='j'; sum=sum+1;}
   case 'K':{Str[j]='k'; sum=sum+1;}
   case 'L':{Str[j]='l'; sum=sum+1;}
   case 'M':{Str[j]='m'; sum=sum+1;}
   case 'N':{Str[j]='n'; sum=sum+1;}
   case 'O':{Str[j]='o'; sum=sum+1;}
   case 'P':{Str[j]='p'; sum=sum+1;}
   case 'Q':{Str[j]='q'; sum=sum+1;}
   case 'R':{Str[j]='r'; sum=sum+1;}
   case 'S':{Str[j]='s'; sum=sum+1;}
   case 'T':{Str[j]='t'; sum=sum+1;}
   case 'U':{Str[j]='u'; sum=sum+1;}
   case 'V':{Str[j]='v'; sum=sum+1;}
   case 'W':{Str[j]='w'; sum=sum+1;}
   case 'X':{Str[j]='x'; sum=sum+1;}
   case 'Y':{Str[j]='y'; sum=sum+1;}
   case 'Z':{Str[j]='z'; sum=sum+1;}
   case 'А':{Str[j]='а'; sum=sum+1;}
   case 'Б':{Str[j]='б'; sum=sum+1;}
   case 'В':{Str[j]='в'; sum=sum+1;}
   case 'Г':{Str[j]='г'; sum=sum+1;}
   case 'Д':{Str[j]='д'; sum=sum+1;}
   case 'Е':{Str[j]='е'; sum=sum+1;}
   case 'Ё':{Str[j]='ё'; sum=sum+1;}
   case 'Ж':{Str[j]='ж'; sum=sum+1;}
   case 'З':{Str[j]='з'; sum=sum+1;}
   case 'И':{Str[j]='и'; sum=sum+1;}
   case 'Й':{Str[j]='й'; sum=sum+1;}
   case 'К':{Str[j]='к'; sum=sum+1;}
   case 'Л':{Str[j]='л'; sum=sum+1;}
   case 'М':{Str[j]='м'; sum=sum+1;}
   case 'Н':{Str[j]='н'; sum=sum+1;}
   case 'О':{Str[j]='о'; sum=sum+1;}
   case 'П':{Str[j]='п'; sum=sum+1;}
   case 'Р':{Str[j]='р'; sum=sum+1;}
   case 'С':{Str[j]='с'; sum=sum+1;}
   case 'Т':{Str[j]='т'; sum=sum+1;}
   case 'У':{Str[j]='у'; sum=sum+1;}
   case 'Ф':{Str[j]='ф'; sum=sum+1;}
   case 'Х':{Str[j]='х'; sum=sum+1;}
   case 'Ц':{Str[j]='ц'; sum=sum+1;}
   case 'Ч':{Str[j]='ч'; sum=sum+1;}
   case 'Ш':{Str[j]='ш'; sum=sum+1;}
   case 'Щ':{Str[j]='щ'; sum=sum+1;}
   case 'Ь':{Str[j]='ь'; sum=sum+1;}
   case 'Ы':{Str[j]='ы'; sum=sum+1;}
   case 'Э':{Str[j]='э'; sum=sum+1;}
   case 'Ю':{Str[j]='ю'; sum=sum+1;}
   case 'Я':{Str[j]='я'; sum=sum+1;}
 
   }
  }
  Memo1->Lines->Add(Str);
}
Memo1->Lines->Add("Великих букв:");
  Memo1->Lines->Add(sum);}
 
//---------------------------------------------------------------------------------------------------------2 завдання
if (RadioGroup1->ItemIndex==1)
{ int summ=0;
 for (int i=0; i<LoadList->Count;i++)
 {
 Str = LoadList->Strings[i];
 for (int j=1; j<=Str.Length();j++)
 {if (Str[j]==' ') {summ=summ+1;}}
 }
  Memo1->Lines->Add("Всього проБілів = " +IntToStr(summ));
 
}
//---------------------------------------------------------------------------------------------------------3 завдання
 
if (RadioGroup1->ItemIndex==2)
{
 
}
 
 
 
 
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
 LoadList->Free();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 LoadList = new TStringList;
}
//---------------------------------------------------------------------------
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2014, 23:00
Ответы с готовыми решениями:

Текстовый файл разбить на строки, вывести символы строк в обратном порядке
Даны текстовый файл, разбить на строки. Каждая строка текста напечатать в обратном порядке.

Требуется переставить его строки в обратном порядке и вывести в другой файл
Дан файл. Требуется переставить его строки в обратном порядке и вывести в другой файл. Формат...

Вывести строку, содержащую эти же слова, но расположенные в обратном порядке. Записать полученную строку в другой файл
Доброго времени суток! Крайне необходима помощь экспертов в С++! Кто может - не оставьте меня в...

Переписать слова в другой файл в обратном порядке
Сначала записать слова North, South, East, West, Flamingo в файлы. После прочитать их и переписать...

6
Эксперт С++
8482 / 6149 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
23.10.2014, 00:15 2
C++
1
2
3
4
5
6
7
8
9
switch (Str[j])
   {
   case 'A':{Str[j]='a'; sum=sum+1;}
   case 'B':{Str[j]='b'; sum=sum+1;}
   case 'C':{Str[j]='c'; sum=sum+1;}
   case 'D':{Str[j]='d'; sum=sum+1;}
   case 'E':{Str[j]='e'; sum=sum+1;}
   case 'F':{Str[j]='f'; sum=sum+1;}
   //...
Быдлокод.

Смотри http://docwiki.embarcadero.com... .LowerCase или/и http://www.cplusplus.com/reference/locale/tolower/

Как-то так:

C++
1
2
3
4
5
if((Str[j]>='A' && Str[j]<='Я')|| Str[j]=='Ё')
{ 
   Str[j]= (String(Str[j]).LowerCase())[1]; 
   sum++; 
}
0
Практикантроп
4839 / 2724 / 533
Регистрация: 23.09.2011
Сообщений: 5,792
23.10.2014, 00:22 3
switch - case без break у вас работает неправильно, да и выглядит не очень... . Я бы порекомендовал переделать; хотя бы так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 if (RadioGroup1->ItemIndex==0) {
   Memo1->Lines->Add("1 çàâäàííÿ");
   Memo1->Lines->Add("Ïåðåðîáëåíèé òåêñò:");
   int sum=0;
   for (int i=0; i<LoadList->Count;i++)
   {
     Str = LoadList->Strings[i];
     String shablon={"ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄŨÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞß"};
     String trafrt={"abcdefghijklmnopqrstuvwxyzàáâãäå¸æçèéêëìíîïðñòóôõö÷øùúûüýþÿ"};
     for (int p,j=1; j<=Str.Length();j++)
       if((p=shablon.Pos(Str[j]))>0) { sum +=1; Str[j] = trafrt[p]; }
     Memo1->Lines->Add(Str);
   }
   Memo1->Lines->Add("Âåëèêèõ áóêâ: "+IntToStr(sum));
 }
Добавлено через 3 минуты
и, конечно, shablon и trafrt вынести из цикла (а то Avazart, законно возмутится...)

Добавлено через 2 минуты
Avazart, LowerCase на кириллице, мне помнится, не работает.
0
Эксперт С++
8482 / 6149 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
23.10.2014, 00:32 4
Цитата Сообщение от nick42 Посмотреть сообщение
Avazart, LowerCase на кириллице, мне помнится, не работает.
В bcb5 может быть... в XE3 нормально работает как я помню.

А tolower() не сработает, если локаль не выставить.

Добавлено через 3 минуты
Да и маленькая правка, в зависимости от версия AnsiString/UnicodeString:

C++
1
2
3
4
5
if((Str[j]>=L'A' && Str[j]<=L'Я')|| Str[j]==L'Ё')
{ 
   Str[j]= (String(Str[j]).LowerCase())[1]; 
   sum++; 
}
0
Практикантроп
4839 / 2724 / 533
Регистрация: 23.09.2011
Сообщений: 5,792
23.10.2014, 00:40 5
Лучший ответ Сообщение было отмечено bojo3 как решение

Решение

Касательно третьего пункта... - вот так на скорую руку должно получиться__
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if (RadioGroup1->ItemIndex==2)
{
  TStringList *SL1 = new TStringList;
  TStringList *SL2 = new TStringList;
  String stroka;
  for (int i=0; i<LoadList->Count;i++)
  {
    Str = LoadList->Strings[i];
    SL1->CommaText = Str;
    stroka="";
    for(int i=SL1->Count-1;i>=0;i--) stroka = stroka+SL1->Strings[i]+" ";
    SL2->Add(stroka);
  }
  SL2->SaveToFile(".\\File2.txt");
  delete SL1; delete SL2;
}
Может быть некоторые конструкции не знакомы? спрашивайте, уточним.
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32970 / 21283 / 8173
Регистрация: 22.10.2011
Сообщений: 36,556
Записей в блоге: 8
23.10.2014, 00:55 6
Цитата Сообщение от Avazart Посмотреть сообщение
в XE3 нормально работает как я помню.
Не работает, и не только в XE3, а и в более новых:
LowerCase returns a string with the same text as the string passed in S, but with all letters converted to lowercase. The conversion affects only 7-bit ASCII characters between 'A' and 'Z'. To convert 8-bit international characters, use AnsiLowerCase.
Насколько я помню, метод LowerCase работает по тем же правилам...
0
Эксперт С++
8482 / 6149 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
23.10.2014, 01:48 7
Где и чем читаете не понятно я же привел ссылку именно на метод, а не ф-цию:

Returns a lowercase version of UnicodeString.

LowerCase returns a new UnicodeString instance that contains all characters in this string, converted to lowercase. The conversion uses the current locale, when appropriate. The original UnicodeString instance remains unchanged.
http://docwiki.embarcadero.com... .LowerCase

C++
1
2
3
4
5
6
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    Caption=  String(L"РАБОТАЕТ").LowerCase();
}
//---------------------------------------------------------------------------
А вот то что по второй ссылке http://www.cplusplus.com/reference/locale/tolower/ не работает, видимо из-за кривой реализации в билдере шаблона ф-ции или std-локалей, но можно использовать через си-ф-цию и c char http://www.cplusplus.com/refer... kw=tolower
0
23.10.2014, 01:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2014, 01:48
Помогаю со студенческими работами здесь

Выделить из текста слова, распечатать их в алфавитном порядке и записать эти слова в другой текстовый файл
В файле задан текст. Слова в нём разделяются общепринятыми знаками препинания. Выделить из текста...

Переписать строки в обратном порядке в другой файл
Вот задание: Имеется текстовый файл. Переписать его строки в обратном порядке (справа налево) в...

Создать текстовый файл G и записать в него строки из файла F в обратном порядке
1. Создать текстовый файл F и записать в него несколько строк. Создать текстовый файл G и записать...

Используя стек, создать другой текстовый файл, в котором числа будут записаны в обратном порядке - Free Pascal
Создать текстовый файл, содержащий текстовую и числовую информацию. Используя стек, создать другой...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru