Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2016, 22:06   #1
Son1098
Новичок
Джуниор
 
Регистрация: 24.10.2016
Сообщений: 6
По умолчанию Программа, которая полным перебором найдёт все такие последовательности из знаков + и -, что получившееся значение неотрицательно

Пытаюсь решить задачу.
Даны восемь неотрицательных целых чисел, каждое меньше 128. Перед каждым числом ставится знак арифметической операции плюс или минус. Знак перед первым числом воспринимается в качестве унарного оператора, знаки между остальными числами – бинарные операторы. Подсчитывается получившаяся сумма. Например: если заданы восемь чисел 5 3 2 1 4 10 3 0 и следующая последовательность знаков + - - + - + - +, то получившееся арифметическое выражение +5-3-2+1-4+10-3+0 будет равно 4. Составьте программу, которая полным перебором найдёт все такие последовательности из знаков + и -, что получившееся значение неотрицательно. Указание: чтобы вывести символ командой printf используйте флаг форматирования %c. Следующее выражение печатает символ +, если i не равно нулю и символ – в другом случае: printf(“%c”,i ? ‘+’ : ‘-’);

Код я расписал такой:
Код:
#include <stdio.h> //printf("");
#include <stdlib.h> //setlocale(LC_ALL,"Russian");
#include <locale.h> //LC_ALL

int main() {
	int i = 128;
	int a = 5;
	int b = 3;
	int c = 2;
	int d = 1;
	int e = 4;
	int f = 10;
	int g = 3;
	int result = 5 - 3 - 2 + 1 - 4 + 10 - 3 + 0;
	printf("%c", result);
}
Результат не увидел. Может неправильно код расписал?
Son1098 вне форума Ответить с цитированием
Старый 25.10.2016, 22:52   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

%c заменить на %i
и объяснить себе зачем нужны переменные от a до g...
waleri вне форума Ответить с цитированием
Старый 25.10.2016, 23:02   #3
Son1098
Новичок
Джуниор
 
Регистрация: 24.10.2016
Сообщений: 6
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
%c заменить на %i
и объяснить себе зачем нужны переменные от a до g...
Других идей не пришло в голову как назвать 8 чисел ( 5 3 2 1 4 10 3 0). И даже в голову не пришло что делать с цифрой 128.
Son1098 вне форума Ответить с цитированием
Старый 25.10.2016, 23:37   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

1) Заведите массив на 8 чисел;
2) Запросите у пользователя 8 чисел и заполните ими массив (можете на этом этапе проверять, что числа удовлетворяют условию);
3) Восемь знаков плюс-минус, значит всего вариантов 256. Самый простой способ перебора мне видится в цикле от 0 до 255, причем счетчик цикла рассматривается как битовая маска, где каждый бит означает знак на соответствующей позиции между числами.

Необходимые знания для реализации: ввод и вывод, массивы, циклы, условные операторы, работа с битами.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Коммивояжер полным перебором kita22 Помощь студентам 1 07.04.2013 14:56
Найти все слова-числа, т.е. такие, которые состоят только из цифр. Известно, что количество цифр в каждом числе не более 9 (девяти vikichocolate Помощь студентам 1 21.12.2011 00:12
Программа которая находит и печатает все группы знаков, в которые знак "*" входит не менее 2-х раз. Scredis Паскаль, Turbo Pascal, PascalABC.NET 0 06.06.2011 22:47
Нужна программа, которая находит в одномерном массиве минимальное и максимальное значение Didar Паскаль, Turbo Pascal, PascalABC.NET 9 08.02.2011 15:14