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

Уравнение с пропущенными цифрами - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ псевдографика в С++ http://www.cyberforum.ru/cpp-beginners/thread196436.html
Доброго вечера. пожалуйста помогите разобраться, и написать коды для следующих программ на С++ 1) вывести красиво на экран матрицу из памяти, с использованием псевдо графики, допустим так: -- -- | 55 8 | | 3 21 | -- --
C++ [C++] Массивы и матрица Привет всем. Мне очень нужна ваша помочь. Нужно сдать отчет по практике, а в нём есть задачки, которые я не могу посилить. 1. Вывести начальные индексы всех непрерывных последовательностей чисел с неувеличивающимися значениями. Размерность массива 200, дипазон значений -50...50. 2. Заполнить матрицу случайными числами. Отобразить матрицу симметрично относительно побочной диагонали. Помогите,... http://www.cyberforum.ru/cpp-beginners/thread196429.html
Подсчет слов (Counter) C++
Народ помогите пожалуйста написать функцию подсчета слов вот задание Написатьпрограммуна языке C++, реализующиюперегруженнуюфункциюxcount, получа- ющую в качестве аргумента или массив целых чисел, или символьную строку, и возвраща- ющую количество подсчитанных элементов. Признаком конца числового массива считать нулевой элемент. Функция не должна изменять переденные ей массивы. Для...
время C++
как в сишке можно реализовать время?? ну допустим если время меньше 12-00 на экран вывести доброе утро.. если 12-18 добрый день.. ну чето в этом духе.. ну или допустим как сделать таймер.. чтобы допустим через 5 мин на экран вывело сообщение что прошло заданое время.. Добавлено через 46 минут
C++ данные о ФИЗИЧЕСКОМ диске http://www.cyberforum.ru/cpp-beginners/thread196396.html
как определить занятое и свободное пространство на жеском диске (ФИЗИЧЕСКОМ).
C++ Уплотнение матрицы. Задание удалить из матрицы нулевые строки и столбцы, тем самым сократив ее. Программа вроде работает правильно, но при некоторых значениях N и M, программа съедает некоторые оставшиеся значения, или вообще ничего не выводит. пример: 0 1 0 0 5 0 программа вообще без вывода. #include <iostream.h> #include <stdlib.h> void main() подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
30.11.2010, 17:07     Уравнение с пропущенными цифрами
xxxfelxxx,
Итак есть запись например:
??2?4+9?=355
всегда имеем для решения 3 массива типа char размером 200 - массивы a, b, c.
изначально всем элементам массивов присваиваем значение символ - '0'.
После записи в массивы значений из приведенного примера, массивы должны выглядеть так:
Массив a[] (у приведенных символов массива индексация начинается слева, т.е. самый левый символ имеет индекс равный 0):
4 ? 2 ? ?
Массив b[]:
? 9
Массив c[]:
5 5 3
Теперь после записи символов в массивы начинаем вычисление нужного нам выражения (Используем принцип сложения чисел в столбик). Для этого используем рек.функцию в параметрах которой передаем два значения: первое значение - индекс очередных складываемых цифр, второе значение - (есть или нет перенос единицы со сложения предыдущих разрядов).
Для этого изначально вызываем рек функцию так:
rec(0, 0);
, что значит будем складывать числа с индексом 0, переноса единицы с предыдущих разрядов нет.
Сама функция rec() (в реализации этого кода она самая сложная):
в ней реализовано возможное сложение очередных символов массивов a[] и b[] с учетом очередного символа c[].
В общем саму реализацию функции rec() я уже описывал здесь:
Цитата Сообщение от valeriikozlov Посмотреть сообщение
По смыслу представляю решение так: ставим три числа в столбик (как при складывании столбиком) число A, число B, число C. Проходим от младших разрядов к старшим.
Может быть три ситуации:
1. Мы можем подобрать цифру (цифры) когда при их сложении, переноса 1 в следующие разряды не будет, например:
?
3
7
или так когда переноса 1 с предыдущих разрядов не было)
?
?
9
в этом случае, выбираем любую подстановку цифры (цифр) и больше к этим разрядам мы не вернемся.
2. Мы можем подобрать цифру (цифры) когда при их сложении, перенос 1 в следующие разряды будет обязательно (какие бы варианты цифры (цифр) мы не перебирали в этих разрядах), например:
6
8
?
или так: (когда перенос 1 с предыдущих разрядов есть)
?
9
?
и в этом случае, выбираем любую подстановку цифры (цифр) и больше к этим разрядам мы не вернемся.
3. Мы можем подобрать цифру (цифры) когда при их сложении, перенос 1 в следующие разряды может быть, а может и не быть.
Вот здесь нужно выбрать один (любой) вариант с переносом 1, второй (любой) вариант без переноса 1. Этих двух вариантов хватит.
Этот процесс выбора думаю легко реализовать с помощью рек. функции. В параметрах передавать, номер разряда (очередного разряда который будем рассматривать) и переменную по которой определять, есть ли перенос 1 с предыдущих разрядов или нет.
В самой функции нужно тщательно продумать варианты когда есть один из вариантов, когда два варианта, когда нет вообще вариантов:
- например:
2
3
8
или (есть перенос 1 с предыдущих разрядов)
4
?
4
При окончании любого из чисел (числа): A,B, C продолжаем рекурсию до конца последнего разряда самого длинного числа, при этом представляя в функции отсутствующие разряды закончившихся чисел нулями.
Если один из вариантов получился, то остальные ветви рекурсии не продолжаем.
Если это понятно, то можно идти дальше: рассмотреть досконально саму функцию rec().
 
Текущее время: 00:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru