powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / СТРОКИ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
10 сообщений из 10, страница 1 из 1
СТРОКИ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    #34348270
Homoerro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПРИВЕТСТВУЮ ВСЕХ ВЕЛИКИХ ЗНАТОКОВ ПРОГРАММИРОВАНИЯ НА Turbo C++!!!
У МЕНЯ ОЧЕНЬ СЕРЬЕЗНАЯ ПРОБЛЕММА.
Я НАЧИНАЮЩИЙ ПРОГРАММИСТ И У МЕНЯ ВЫШЛИ СЕРЬЕЗНЫЕ ПРОБЛЕММЫ С ЛАБОРАТОРНОЙ ПО СТРОКАМ.
В СВЯЗИ С ТЕМ, ЧТО Я ПЛОХО ЗНАЮ СИНТАКСИС ЯЗЫКА С++, НО Я НЕМНОГО ЗНАЮ ПАСКАЛЬ, И Я ЭТУ ЛАБУ СДЕЛАЛ НА ПАСКАЛЕ, НО МНЕ НАДО НА С++ И Я ВАС ОЧЕНЬ ПРОШУ ЗНАТОКИ ПРОГРАММИРОВАНИЯ ПОМОЧЬ МНЕ.
ЗАРАНЕЕ ОГРОМНЫЙ РЕСПЕКТ И УВАЖЕНИЕ И БОЛЬШОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!!!

ВОТ САМИ ЗАДАНИЯ:
1)Дана последовательность слов. Напечатать те слова последовательности, которые отличны от последнего слова и удовлетворяют следующему свойству: слово симметрично.

2)В заданной строке удалить все символы двоеточие ( и подсчитать количество удаленных символов.
3)Программа. Дана непустая последовательность непустых слов из латинских букв; соседние слова отделены друг от друга запятой, за последним словом—точка. Определить количество слов, которые оканчиваются буквой w;


Тонкости, которые должны быть в программе:
1)запрашивает какую из приведенных в варианте задач следует выполнить,
2)запрашивает необходимые данные в main,
3)передает входные данные в соответствующую функцию,
4)результат выводится из main.




Решение на Паскале:

var
k,k1,n,i,j,pr,pr1,a,s,q,p,m : integer;
st,st1,st2,st3,st4,st5 : string;
begin
writeln(' CTPOKA = ');
readln(st3);
k:=length(st3);
n:=0;
while st3[k]<>' ' do
begin
k:=k-1;
n:=n+1
end;
st1:=copy(st3,k+1,n);

st:='';
for i:=1 to k do
begin
if st3 <>' '
then st:=st+st3
else
begin
pr:=0;k1:=length(st);
for j:=1 to length(st) div 2 do
if st[j]<>st[k1-j+1] then pr:=1;
if pr=0 then
begin
if length(st)=length(st1)
then
begin
pr1:=0;
for j:=1 to length(st) do
if st[j] <> st1[j] then pr1:=1;
end
else pr1:=1;
end;
if (pr=0) and (pr1=1) then writeln(st);
st:='';
end;
end;



writeln(' CTPOKA= ');
readln(st4);
a:=0;
s:=0;
q:=length(st4);
while q>= 0 do
begin
if st4[q]= ':' then
begin
delete(st4,q,1);

s:=s+1;
end;
q:=q-1;
end;
writeln(st4);
writeln(' kol-vo udalennih := ',s);


writeln('CTPOKA= '); readln(st5);
m:=1;p:=0;
while m<=length(st5) do
begin
if (st5[m]=',') or (st5[m]='.') then
if st5[m-1]='w'
then p:=p+1;
inc(m)
end;
writeln('zakan4. na w ',p,' slov(a)');

readln
end.



Ну что ж, вот они те самые логаритмы решения этих задачек.
Очень прошу переведите это все на язык С++!!!
ЗАРАНЕЕ ОГРОМНЫЙ РЕСПЕКТ И УВАЖЕНИЕ И БОЛЬШОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!!!
...
Рейтинг: 0 / 0
СТРОКИ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    #34348340
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в раздел работа

вы хоть бы код выделили тегом соответствующим чтоли...

аффтопитезь: объект либо именован, либо не существует
...
Рейтинг: 0 / 0
СТРОКИ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    #34348440
Homoerro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы хоть бы код выделили тегом соответствующим чтоли...

аффтопитезь: объект либо именован, либо не существует



а что это такое:-)?
...
Рейтинг: 0 / 0
СТРОКИ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    #34348454
Фотография Termi_uc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не горит, то завтра выложу. После 16:00. Если не забуду... :)
...
Рейтинг: 0 / 0
СТРОКИ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    #34349179
Homoerro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Termi_ucЕсли не горит, то завтра выложу. После 16:00. Если не забуду... :)


Termi_uc, нет, не горит)))))))))))))
...
Рейтинг: 0 / 0
СТРОКИ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    #34351251
Фотография Termi_uc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фу, блин, вот. Задолбался отлаживать. Попробуй разобратся :)
Может быть подход, который я использовал для работы со строками не правильный, однако всё вроде работаев. Если в Turbo C есть класс String - используй его вместо char *. Тогда все доп. функции не нужны.
Код: plaintext
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.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
//---------------------------------------------------------------------------
#include <conio.h>
#include <iostream.h>
#include <math.h>
#include <iomanip.h>

//-----------Некоторые-необходимые-функции-для-работы-со-строками------------
//---------------------------------------------------------------------------
char * SubStr(char * String, int Start, const int End, bool DeleteOldString = true)
{
 if(!String || End <= Start || strlen(String) < (End - Start))return NULL;

 unsigned int newStrLen(End - Start);
 char * Result = new char[newStrLen];

 for(int i( 0 ) ; i < newStrLen ; i++, Start++, Result[i] = '\0')
  Result[i] = String[Start];

 if(DeleteOldString && String){delete String; String = NULL;}
 return Result;
}
//---------------------------------------------------------------------------
char * StrDel(char * String, int Index, const int Count, bool DeleteOldString = true)
{
 if(!String || Count ==  0 )return NULL;

 unsigned int StrLen(strlen(String)), newStrLen(StrLen - Count);
 unsigned int i( 0 );

 if(Index + Count > StrLen)return SubStr(String, Index, Index + Count, DeleteOldString);

 char * Result = new char[newStrLen];

 for(i =  0  ; i < Index ; i++, Result[i] = '\0')
  Result[i] = String[i];
 for(int j(Index + Count) ; i < StrLen ; i++, j++, Result[i] = '\0')
  Result[i] = String[j];

 if(DeleteOldString && String){delete String; String = NULL;}
 return Result;
}
//---------------------------------------------------------------------------
char * StrAdd(char * String, const char Simbol, bool DeleteOldString = true)
{
 char * Result(NULL);

 if(!String || strlen(String) <  1 )
 {
  Result = new char[ 2 ];
  Result[ 0 ] = Simbol;
  Result[ 1 ] = '\0';

  return Result;
 }
 else
 {
  unsigned int newStrLen(strlen(String) +  1 ), i;
  Result = new char[newStrLen +  1 ];

  for(i =  0  ; i < newStrLen -  1  ; i++)
   Result[i] = String[i];
  Result[i] = Simbol;
  Result[i +  1 ] = '\0';

  if((newStrLen -  1 ) >  0  && DeleteOldString){delete String; String = NULL;}
  return Result;
 }
}
//---------------------------------------------------------------------------
char * StrAdd(char * String, const char * String2, bool DeleteOldString = true)
{
 char * Result(NULL);

 if(!String2 && !String)return NULL;
 if(!String2 && String)
 {
  DeleteOldString = false;
  Result = String;
 }
 else if(!String && String2)
 {
  unsigned int _newStrLen(strlen(String2));
  Result = new char[_newStrLen +  1 ];
  for(int i( 0 ) ; i < _newStrLen ; i++, Result[i] = '\0')Result[i] = String2[i];
 }
 else//(String && String2)
 {
  unsigned int str_len1(strlen(String)), str_len2(strlen(String2)),
               newStrLen(str_len1 + str_len2), i;
  Result = new char[newStrLen];

  for(i =  0  ; i < str_len1 ; i++)Result[i] = String[i];
  for(int j( 0 ) ; j < str_len2 ; j++, i++)Result[i] = String2[j];

  Result[i +  1 ] = '\0';
 }

 if(DeleteOldString && String){delete String; String = NULL;}
 return Result;
}
//-----------------------------Задания---------------------------------------
//---------------------------------------------------------------------------
char * ex1(char * Stroka)
{
 if(!Stroka)return "Oshibka";

 int k(strlen(Stroka)), k1, n, pr, pr1;
 char * str1(NULL), * str(NULL), * Result(NULL);

 for(n =  0  ; Stroka[k] != ' ' ; n++, k--);

 str1 = SubStr(Stroka, k +  1 , n + k);

 for(int i( 0 ) ; i < k ; i++)
 {
  if(Stroka[i] != ' ')str = StrAdd(str, Stroka[i]);
  else
  {
   pr =  0 ;
   k1 = strlen(str);
   for(int j( 0 ) ; j < k1/ 2  ; j++)if(str[j] != str[k1 - j -  1 ])pr =  1 ;

   if(pr ==  0 )
    if(str && str1 && strlen(str) == strlen(str1))
    {
     pr1 =  0 ;
     for(int j( 0 ) ; j < strlen(str) ; j++)if(str[j] != str1[j])pr1 =  1 ;
    }
    else pr1 =  1 ;

   if(pr ==  0  && pr1 ==  1 ){//if(Result)cout<<Result<<endl;;
   Result = StrAdd(Result, '\n');
   Result = StrAdd(Result, str);}

   if(str){delete str; str = NULL;}
  }
 }

 if(!Result)return "Ni odnogo slova";
 else return Result;
}
//---------------------------------------------------------------------------

char * ex2(const char * String, int &DD_Count)
{
 int a( 0 ), strLen(strlen(String));
 char * Result = new char[strLen];
 DD_Count =  0 ;
 strcpy(Result, String);

 for(int q(strLen) ; q >=  0  ; q--)
  if(Result[q] == ':')
  {
   Result = StrDel(Result, q,  1 );
   DD_Count++;
  }

 return Result;
}
//---------------------------------------------------------------------------

int ex3(const char * String)
{
 int a( 0 ), strLen(strlen(String)), Result( 0 );

 for(int m( 0 ) ; m < strLen ; m++)
  if((String[m] == ',' || String[m] == '.') &&
     (String[m -  1 ] == 'w' || String[m -  1 ] == 'W'))
   Result++;

 return Result;
}
//---------------------------------------------------------------------------

int main(int argc, char* argv[])
{
 int KEY( 1 );
 START:

 cout<<endl<<"Viderite deistvie."<<endl
     <<" 1. Napechatat te slova? kotori otlichni ot poslednego.\n"
     <<" 2. Ydalit vse \":\"\n"
     <<" 3. Opredilit kol-vo slov, ok. na \"w\"\n"
     <<"\n 0. Exit\n";

 cin>>KEY;

 switch(KEY)
 {
  default:
  case  0 :
   return  0 ;
  break;
  case  1 :
  {
   char * Vopros = new char[ 100 ];
   cout<<"\nVvedite predlogenie\n";
   cin>>Vopros;
   char * Otvet = ex1(Vopros);//ex1("121 NgN BtB MnM CfC AAA");//
   if(Otvet)cout<<Otvet;
  }
  break;
  case  2 :
  {
   char * Vopros = new char[ 100 ], * Otvet;
   int DD_count( 0 );
   cout<<"\nVvedite predlogenie\n";
   cin>>Vopros;

   Otvet = ex2(Vopros, DD_count);//"123NNN:BBB:AAA",
   cout<<"Otvet: "<<Otvet<<"\nKol-vo \":\" - "<<DD_count;
  }
  break;
  case  3 :
  {
   char * Vopros = new char[ 100 ];
   cout<<"\nVvedite predlogenie\n";
   cin>>Vopros;

   cout<<"\nKol-vo slov zak. na\"w\" - "<<ex3(Vopros);
  }
  break;
 }

 getch();
 goto START;
}
//---------------------------------------------------------------------------
...
Рейтинг: 0 / 0
СТРОКИ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    #34351261
Homoerro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чел, ты гений, о как ты меня выручил!!!
спасибо тебе большое, незнаю даже, как отблагодарить!!!
...
Рейтинг: 0 / 0
СТРОКИ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    #34351269
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Termi_ucФу, блин, вот. Задолбался отлаживать. Попробуй разобратся :)
Может быть подход, который я использовал для работы со строками не правильный, однако всё вроде работаев. Если в Turbo C есть класс String - используй его вместо char *. Тогда все доп. функции не нужны.Эта... а учебники почитать? Или просто стандартные хэдеры просмотреть? Оно конечно прикольно делать собственные SubStr или StrAdd...
А еще можно потратить минуту на просмотр каталога /include увидеть в нем string.h, предположить что там описаны функции работы со строками, и действительно найти в нем кучу интересных функций. Например strncpy и strcat. Потом еще пару минут на чтение хелпа по этим функциям и усе.
...
Рейтинг: 0 / 0
СТРОКИ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    #34351270
Фотография Termi_uc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Homoerroчел, ты гений, о как ты меня выручил!!!
спасибо тебе большое, незнаю даже, как отблагодарить!!!
Незачто.
Ты здай сначало. А то препод вопрос какойь нибудь задасть по лабе, а ты даже ответить не сможеш... И все мои труды насмарку...
Вообщем УДАЧИ. Учи C++, а лучше Object C (aka CBuilder C++).
...
Рейтинг: 0 / 0
СТРОКИ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    #34351272
Homoerro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Termi_uc Homoerroчел, ты гений, о как ты меня выручил!!!
спасибо тебе большое, незнаю даже, как отблагодарить!!!
Незачто.
Ты здай сначало. А то препод вопрос какойь нибудь задасть по лабе, а ты даже ответить не сможеш... И все мои труды насмарку...
Вообщем УДАЧИ. Учи C++, а лучше Object C (aka CBuilder C++).


ок! буду учить;))))))) еще раз спасибо;))))))
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / СТРОКИ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]