C/C++
Кто поможешь сделать программирование на С++, задача с переводом СС?
Надо написать программу на С++, желатьельно с комментариями, чтобы я поняла. Само задание: Программа должна считывать с клавиатуры число, записанное в одной системе счисления, и выводить на экран это число в записи по другому основанию, например: исходное число – 112D, старое основание – 16, новое основание – 8, результат – 10455.
https://ru.stackoverflow.com/questions/594081/Преобразование-чисел-между-системами-счисления
в мэйл ру лучше ждать помощи не стоит, лазь по stackoverflow и подобным ему сайтам
в мэйл ру лучше ждать помощи не стоит, лазь по stackoverflow и подобным ему сайтам
Омерзак***рахматуллаев *****проста Омик
Уже в процессе, можно подумать тут работы на 5 минут.
Александр Погребной
а лучше в японию за помощью! они пришлют игровой автомат и брата марио
#include < iostream >
using namespace std;
int main()
{
setlocale(0, "");
int a, b;
cout << "введите исходный и результирующий разряды" << endl;
cin >> a >> b;
cout << "введите число" << endl;
char chislo[124]{}; //хрананение задданного числа в виде символов
char output[124]{}; //для вывода числа
const char diapazone[25] = "0123456789ABCDEFGHIJKLMN"; //таблица соостветствия символов до 24 розряда
cin >> chislo;
cout << chislo << endl;
int var10 = 0; //предстваление числа в 10-й системе
int vara; //10-е значение символа
int size = -1; //разрядность заданного числа
for (auto el : chislo)
{
if (el == '\0') break;
size++;
}
cout << size << endl;
for (auto el : chislo) //перечеслитель заданного числа
{
vara = 0; //сброс текущего символа
if (el == '\0') break;
for (auto ch : diapazone)
{
if (el == ch) break; // сравнение найденного символа с таблицей, чтобы найти его порядковый номер, который и будет его значением.
vara++; // если символ в этой итерации не найден, увеличить vara на 1
}
var10 += vara * pow(a, size--); //вычисление 10-чного числа
}
cout << var10 << endl;
int indicate0 = var10;
size = 0;
do
{
indicate0 = var10/b;
vara = 0;
for (auto ch : diapazone)
{
if (vara == (var10 - indicate0 * b))
{
output[size++] = ch;
break;
}
vara++;
}
cout << var10-indicate0*b << endl;
var10 = indicate0;
} while (var10 > 1);
cout << "Ваше число (читать справа налево): " << output << endl;
}
using namespace std;
int main()
{
setlocale(0, "");
int a, b;
cout << "введите исходный и результирующий разряды" << endl;
cin >> a >> b;
cout << "введите число" << endl;
char chislo[124]{}; //хрананение задданного числа в виде символов
char output[124]{}; //для вывода числа
const char diapazone[25] = "0123456789ABCDEFGHIJKLMN"; //таблица соостветствия символов до 24 розряда
cin >> chislo;
cout << chislo << endl;
int var10 = 0; //предстваление числа в 10-й системе
int vara; //10-е значение символа
int size = -1; //разрядность заданного числа
for (auto el : chislo)
{
if (el == '\0') break;
size++;
}
cout << size << endl;
for (auto el : chislo) //перечеслитель заданного числа
{
vara = 0; //сброс текущего символа
if (el == '\0') break;
for (auto ch : diapazone)
{
if (el == ch) break; // сравнение найденного символа с таблицей, чтобы найти его порядковый номер, который и будет его значением.
vara++; // если символ в этой итерации не найден, увеличить vara на 1
}
var10 += vara * pow(a, size--); //вычисление 10-чного числа
}
cout << var10 << endl;
int indicate0 = var10;
size = 0;
do
{
indicate0 = var10/b;
vara = 0;
for (auto ch : diapazone)
{
if (vara == (var10 - indicate0 * b))
{
output[size++] = ch;
break;
}
vara++;
}
cout << var10-indicate0*b << endl;
var10 = indicate0;
} while (var10 > 1);
cout << "Ваше число (читать справа налево): " << output << endl;
}
Омерзак***рахматуллаев *****проста Омик
Сырая версия, без проверок и отладки на всех значениях. Может быть в конце следует написать var10 > 0 вместо > 1
Омерзак***рахматуллаев *****проста Омик
В конце все же while (var10>0);
для правильного вывода результата в конце добавить:
size = 0;
for (auto el : output) // вычисление размера строки результата для вывода
{
if (el == '\0') break;
size++;
}
cout << "Результат: ";
for (int i = 0; i < size; i++) //вывод знаков из строки в обратном порядке
cout << output[size - 1 - i];
для правильного вывода результата в конце добавить:
size = 0;
for (auto el : output) // вычисление размера строки результата для вывода
{
if (el == '\0') break;
size++;
}
cout << "Результат: ";
for (int i = 0; i < size; i++) //вывод знаков из строки в обратном порядке
cout << output[size - 1 - i];
Омерзак***рахматуллаев *****проста Омик
В задании нет опции "Программа должна проверять правильность введенных значений". Это все же обучение, а не коммерческий продукт.
ответ может быть в двух вариантах = 1 это манипуляторы ввода вывода для представления числа в разных системах счисления, а 2 это "физкультура" для головы самому что-то сделать. Первый вариант уже предложили
Похожие вопросы
- Основы программирования на C. Задача. Помогите пожалуйста
- Помогите с программированием на C++
- Помогите сделать задние по программированию (c++)
- Помогите сделать задание по программированию на C++
- Основы программирования на C. Задача
- Помогите сделать задачу в с++ 10 вариант
- Помогите с программированием на с++
- Помогите с программированием
- Помогите с программированием на Си
- Помогите по программированию!!! с++ используя структуры