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

"М" на "Н" - C++

Восстановить пароль Регистрация
 
san4elllo
1 / 1 / 0
Регистрация: 08.11.2009
Сообщений: 36
24.01.2011, 22:36     "М" на "Н" #1
Требуется написать программу на С++, заменяющюю в строке S все буквы "М" на "Н" и обратно. При отсутствии букв "М" и "Н", должно выдаваться соответствующее сообщение.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2011, 22:36     "М" на "Н"
Посмотрите здесь:

C++ Дан текст, хранящийся в текстовом файле f, каждый символ которого может быть малой буквой, цифрой или одним из знаков "+", "-", "*".
Что означают команды "fun", "my_max", "my_min" в C++? C++
Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: "Рабочий день","Суббота" или "Воскресенье" C++
C++ Через ООП: Дать для числа наименование: "рубль", "рубля", "рублей";
C++ Написать программу которaя запрашиваeт у пользователя номер дня недели, затем выводит одно из сообщений "рабочий день", "суббота", "воскресенье"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Byblick32
5 / 5 / 0
Регистрация: 24.06.2010
Сообщений: 14
24.01.2011, 22:43     "М" на "Н" #2
Привет san4elllo!
Твоя проблема легко решаема.
Я набросал код для твоего алгоритма, надеюсь тебе будет полезным.
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
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 AnsiString st = Edit1->Text;
 boolean error = true;
 for (int i = 1; i <= st.Length(); i++)
 {
  if (st[i] == 'н')
  {
   error = false;
   st.Delete(i, 1);
   st.Insert('м', i);
   continue;
  }
 
  if (st[i] == 'м')
  {
   error = false;
   st.Delete(i, 1);
   st.Insert('н', i);
  }
 }
 Edit1->Text = st;
 if (error)
 ShowMessage("Искомые символы не найдены");
}
san4elllo
1 / 1 / 0
Регистрация: 08.11.2009
Сообщений: 36
24.01.2011, 22:46  [ТС]     "М" на "Н" #3
спасибо за код, а без переменной логического типа никак не обойтись?
Byblick32
5 / 5 / 0
Регистрация: 24.06.2010
Сообщений: 14
24.01.2011, 22:48     "М" на "Н" #4
Конечно можно составить алгоритм, который не будет использовать этой переменной. Но зачем усложнять код, если переменная логического типа занимает совсем мало памяти, и данное решение на мой взгляд довольно простое и понятное.
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
25.01.2011, 18:21     "М" на "Н" #5
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <string>
 
int main()
{
   std::string s = "many mamy little chicken mm";
   size_t t;
   while ( (t = s.find("m")) != std::string::npos)
      s.replace(t, 1, "n");
   std::cout << s << std::endl;
}


Добавлено через 12 лет
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
#include <iostream>
#include <string>
 
int main()
{
   std::string s = "MMM HHH some fuckin* words";
   bool y = 1;
   if ( s.find("M") == std::string::npos &&
        s.find("H") == std::string::npos )
   {
      y = 0;
      std::cout << "There are no letters M or H in the sentence!"
                << std::endl;
   }
   
   size_t t;
   while ( (t = s.find("M")) != std::string::npos )
      s.replace(t, 1, "H");
   if (y)
   std::cout << "After M replace: "
             << std::endl
             << s 
             << std::endl;
             
   while ( (t = s.find("H")) != std::string::npos )
      s.replace(t, 1, "M");
   if (y)
   std::cout << "After H replace: "
             << std::endl
             << s 
             << std::endl;
}
Yandex
Объявления
25.01.2011, 18:21     "М" на "Н"
Ответ Создать тему
Опции темы

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