Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / СТРОКИ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! / 10 сообщений из 10, страница 1 из 1
21.02.2007, 18:43
    #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
21.02.2007, 19:17
    #34348340
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СТРОКИ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
в раздел работа

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

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

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



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


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


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


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