topshopnails
?>

Составить программу, выполняющую вычисление: если число четное, то разделить его на 2, если нечетное - умножить на 2. (Если число делится на 2 , то остаток равен, не делится - не равен 0, используйте функцию mod)

Информатика

Ответы

khadisovam9
#include <cstdio>
#include <cstring>

int
main(void)
{
    enum
     {
        MAX_BUF_SIZE = 100
    };

    char buf[MAX_BUF_SIZE];
    scanf("%s", buf);
    int n = strlen(buf);
    int shift = 0;
    for (int i = 0; i < n; i++) {
        shift = (shift + buf[i] - '0') % 3;
    }
    shift = 3 - shift;
    int sel = -1;
    for (int i = 0; i < n; i++) {
        int tmp = buf[i] - '0' + shift;
        if (0 <= tmp && tmp <= 9) {
            sel = i;
            break;
        }
    }
    if (sel == -1) {
        for (int i = n - 1; i >= 0; i++) {
            int tmp = buf[i] - '0' - shift;
            if (0 <= tmp && tmp <= 9) {
                buf[i] -= shift;
                break;
            }
        }
    } else {
        buf[sel] += shift;
        while ('0' <= buf[sel] + 3 && buf[sel] + 3 <= '9') {
            buf[sel] += 3;
        }
    }
    printf("%s\n", buf);
    return 0;
}
s2010av565
#include <iostream>
#include <string>
#include <vector>
using namespace std;
 
int main()
{
    int sum = 0;
    vector<int> v;
    string s;
    cin >> s;
    for (int i = 0; i < s.size(); ++i) {
       v.push_back((int)s[i] - 49);
       ++sum; ++v[i];
   }
   int z = sum % 3; z = 3 - z;
   {
    int i = 0;
    while (i <= v.size() && (v[i] + z) > 9) {
       ++i;
    }
    if (i >= v.size()) {
      if (z == 3) {
          v[v.size() - 1] -= 3;
      } else {
          v[v.size() - 1] -= (3 + z);
      }
    } else {
       v[i] += z;
       while ((v[i] + 3) < 9) {
           v[i] += 3;
       }
     }
   }
   for (int i = 0; i < v.size(); ++i) {
       cout << v[i];
   }
   return 0;
}

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Составить программу, выполняющую вычисление: если число четное, то разделить его на 2, если нечетное - умножить на 2. (Если число делится на 2 , то остаток равен, не делится - не равен 0, используйте функцию mod)
Ваше имя (никнейм)*
Email*
Комментарий*