- #define _CRT_SECURE_NO_WARNINGS
- /*
- Дана строка из четырех десятичных цифр. Если остаток от деления произведения первых
- двух цифр на третью цифру равен четвертой цифре, то поменять местами вторую и
- третью цифры. Иначе заменить четвертую цифру дополнением до 5 (если это возможно).
- */
- #include <stdio.h>
- #include <ctype.h>
- #include <string.h>
- #include <locale.h>
- void clear_input() {
- int c;
- while ((c = getchar()) != '\n' && c != EOF) {}
- }
- int char_to_int(char x) {
- return x - '0';
- }
- char int_to_char(int x) {
- return x + '0';
- }
- int main() {
- setlocale(LC_ALL, "rus");
- setlocale(LC_NUMERIC, "eng");
- char str[4], str1[4];
- unsigned flag = 1, tmp = 1;
- while (tmp) {
- while (flag) {
- printf("Введите строку из 4 цифр без пробелов:\n");
- scanf("%s", &str);
- if (!isdigit(str[0]) || !isdigit(str[1]) || !isdigit(str[2]) ||
- !isdigit(str[3])) {
- printf("Повторите ввод.\n");
- }
- else { flag = 0; }
- }
- strcpy(str1, str);
- int x1 = char_to_int(str1[0]) * char_to_int(str1[1]);
- size_t size = sizeof(str1) / sizeof(*str1);
- if (char_to_int(str1[2]) != 0 && x1 % char_to_int(str1[2]) == char_to_int(str1[3])) {
- char temp = str1[size + 1];
- temp = str1[2];
- str1[2] = str1[1];
- str1[1] = temp;
- }
- else if (char_to_int(str1[3]) < 5) {
- str1[3] = int_to_char(5);
- }
- __asm {
- mov al, str[0];
- mov bl, str[1];
- mov cl, str[2];
- mov dl, str[3];
- sub al, 48;
- sub bl, 48;
- mul bl;
- sub cl, 48;
- sub dl, 48;
- cmp cl, 0;
- je ELIF;
- div cl;
- cmp ah, dl;
- jne ELIF;
- add cl, 48;
- add bl, 48;
- mov str[1], cl;
- mov str[2], bl;
- jmp EXIT;
- ELIF:
- cmp dl, 5;
- jae EXIT;
- mov str[3], 53;
- EXIT: nop;
- }
- printf("Результат работы программы на языке Си: %s\n", str1);
- printf("Результат работы программы на ассемблере: %s\n\n", str);
- clear_input();
- printf("Хотите продолжить?\n0 - Нет\n1 - Да\n");
- int term = 1;
- while (term == 1) {
- if (scanf("%d", &tmp) != 1 || (tmp != 0 && tmp != 1)) {
- printf("Введено неверное значение\n");
- printf("Хотите продолжить?\n0 - Нет\n1 - Да\n");
- clear_input();
- }
- else {
- term = 0;
- flag = 1;
- }
- }
- }
- exit(0);
- }
[text] ger
Viewer
*** This page was generated with the meta tag "noindex, nofollow". This happened because you selected this option before saving or the system detected it as spam. This means that this page will never get into the search engines and the search bot will not crawl it. There is nothing to worry about, you can still share it with anyone.
Editor
You can edit this paste and save as new: