• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите решить задачи на С++

  • Автор темы Автор темы dtank
  • Дата начала Дата начала

dtank

Ученик
Регистрация
22 Янв 2010
Сообщения
7
Реакции
0
Баллы
0
Помогите решить задачи на С++

:confused:
  • Помогите решить задачи на С++ до воскресного вечера 24.01.10. Очень срочно надо получить зачет.
  • Хоть путь решения, хоть что-нибудь...

1. Написать две взаимосвязанных процедуры кодирования и восстановления дискретных сообщений (ДС) по их коду, если механизм коди¬рования заключается в первоначальной инверсии порядка слов в ДС, а затем инверсии порядка букв внутри слов. (например, "волк"-->"колв").

2. Найти наименьшее общее кратное двух длинных целых чисел.

3. Написать алгоритм вычисления арифметических выражений, содержащих в качестве операндов только однозначные целые положительные числа, если выражения записаны в постфиксной форме.(Моделирование и использование стеков, деков и очередей.)
 
Предлагаю такой вариант, но в нем не обрабатывается ситуация предельных значений длинного целого, так как НОК также имеет тип длинное целое, что может вызвать переполнение типа.
Код:
#include <iostream>

using namespace std;
int main(int argc, char *argv[])
{
  long a,b;
  long nok;
  char buf[256];
  CharToOem("Введите значение a ", buf);
  cout << buf;
  cin >>a;
  CharToOem("Введите значение b ", buf);
  cout << buf;
  cin >>b;    
  if (a>b)
  {
      nok=a;
   }
   else
   {
        nok=b;
   }
   char rez=0;
   long o1;
   long o2;
   while (rez<1)
   {
      o1=nok%a;
      o2=nok%b;
      if ((o1==0) && (o2==0)) 
      {
           rez++;
      } 
      else 
      {
           nok++;
       }
   }
   cout << "\n nok=" << nok;
    system("PAUSE");
    return EXIT_SUCCESS;
}
Скорость работы программы также оставляет желать лучшего, но, во всяком случае, НОК вычисляется, хотя не исключены ошибки.
 
Последнее редактирование модератором:
1. Написать две взаимосвязанных процедуры кодирования и восстановления дискретных сообщений (ДС) по их коду, если механизм коди¬рования заключается в первоначальной инверсии порядка слов в ДС, а затем инверсии порядка букв внутри слов. (например, "волк"-->"колв").
Думаю, тут нужно обрабатывать строку как массив символов. Для шифрования можно скопировать массив в другой но в обратном порядке, потом скопировать первый и последний элементы без изменения номера, а остальные опять в обратном порядке.
Для дешифровки поступить в обратном порядке.
 
По поводу задачи номер два - смотрите Википедию Наименьшее общее кратное — Википедия

Алгоритм шифрования в задаче 3 сформулирован в условии задачи: поменять местами слова, затем поменять местами буквы в словах.
 
Если вы про эту формулу:
9bef2b7e8fc00e80268f92f5bb7845bd.png
, значит, попробую переделать под нее. Потом листинг проверьте, пожалуйста, если вас не затруднит. И спасибо большое за подсказку.
 
Да, я про неё. Однако, срок сдачи уже вышел.
 
Вы используете Dev-CPP в качестве среды разработки?

Код:
cout << "\n nok=" << nok;
лучше писать как
Код:
cout << endl <<" nok=" << nok;
 
Вы используете Dev-CPP в качестве среды разработки?

Код:
cout << "\n"
лучше писать как
Код:
cout << endl
то есть эти команды эквивалентны? Да, именно эту среду использую.
 
Технически, не совсем. Под Windows это будет:
cout << "\r\n"
Под UNIX:
cout << "\n"
У этих ОС разные представления о том, чем должны заканчиваться строки.
Советую перейти на Code::Blocks: более стабильна и отладчик корректно работает.
 
Я сейчас перехожу на AltLinux, там своя среда разработки.

Кстати, оказывается, тема не устарела и еще актуальна.
 
Code::Blocks есть и для Linux, причем проекты совместимы с Windows-версией.
 
Тема актуальна
 
AlexZir, помоги мне решить задачи, пожалуйста. Очень нужно.
 
Назад
Сверху