На вход программы подается непрерывная строка из символов, необходимо выделить встречающиеся в этой строке нечетные цифры и сформировать из них минимальное число, за тем это число разделить на 2 округлить до большего и вывести на экран. Если нечетных цифр в строке нет то на экран выводится 1. ваша задача написать максимально эффективную программу на любом языку программирования.
Решение можно прислать в комментарии
Решение можно прислать в комментарии
2 комментария:
#include
// ИС Дракон. Маршрутный транслятор.
// M:\SCHOOLE\открытый урок\c4-2еммп.drt
// 52."int cifra;" Изменение 29.03.2012 22:54:38
// Схема - Процедура
main(){
int cifra, cmfra;
int n=1,c;
int CIFRA[10]={0,0,0,0,0,0,0,0,0,0};
char str[n];
// ==================== Шампур
// 55.Заголовок / С4
// -112.Правый комментарий / программа выбирает из строки символов нечетные цифры (без повторов), формируит из них наименьшее число, делит его на 2, округляет к большему и записывает результат, если нечетных цифр нет записывает 1
// 57.Имя ветки / ввод и обработка строки
// 86.Ввод / с клавиатуры / строка символов
printf("Введите строку символов");
scanf("%s",&str);
// 87.Действие / определить общее число символов в строке
n = strlen(str);
// 15.Действие / цмфра = 0
cmfra=0;
L90: ;
// 90.Действие / цифра = 1
cifra=49;
c=1;
// 5.Вопрос / символ строки цифра? - Нет
if (!(str[cmfra]>48 && str[cmfra]<58)) goto L105;
L99: ;
// 99.Вопрос / символ строки = цифре? - Нет
if (!(str[cmfra]==cifra)) goto L109;
// 7.Действие / ячейка цмфрового массива с номером цифры = цифре
CIFRA[c]=c;
L109: ;
// 109.Вопрос / цифра =9 - Нет
if (!(cifra==57)) goto L106;
L105: ;
// 105.Вопрос / сравнили все символы строки? - Нет
if (!(cmfra==n)) goto L96;
// 58.Адрес / формирование числа из массива цифр
goto L71 ;
// ==================== Шампур
L106: ;
// 106.Действие / предыдущая цифра + 2
cifra=cifra+2;
c=c+2;
goto L99 ;
// ==================== Шампур
L96: ;
// 96.Действие / номер предыдущего символа + 1
cmfra=cmfra+1;
goto L90 ;
// ==================== Шампур
// 66.Имя ветки / формирование числа из массива цифр
L71: ;
// 71.Действие / k=1, число =0, номер ячейки=9
int k=1, chislo=0, nn=9;
L74: ;
// 74.Вопрос / число из ячейки больше 0? - Нет
if (!(CIFRA[nn]>0)) goto L84;
// 77.Действие / число = число из номера ячейки умножить на 10 в степени k плюс предыдущее число
chislo = CIFRA[nn]*k+chislo;
// 80.Действие / k=k*10
k=k*10;
L84: ;
// 84.Вопрос / номер ячейки равен 1? - Нет
if (!(nn==1)) goto L81;
// 67.Адрес / обработка числа
goto L1 ;
// ==================== Шампур
L81: ;
// 81.Действие / номер ячейки -2
nn=nn-2;
goto L74 ;
// ==================== Шампур
// 63.Имя ветки / обработка числа
L1: ;
// 1.Вопрос / число>0 - Нет
if (!(chislo>0)) goto L4;
// 69.Действие / число = (число+1)/2
chislo=(chislo+1)/2;
L70: ;
// 70.Вывод / на экран / число
printf("Ответ = %d",chislo);
// 64.Конец / Конец
goto L_end_52 ;
// ==================== Шампур
L4: ;
// 4.Действие / число=1
chislo=1;
goto L70 ;
// ==================== End
L_end_52: ;
}
// ==================== D end
В предыдущем посте:
#include
и в комментарии где идет подсчет числа читать следующий текст "число равно числу умноженному на k плюс число"
Также можно сократить число переменных убрав три лишних - используя объявленные до этого переменные
Отправить комментарий