Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
2 / 2 / 0
Регистрация: 08.02.2015
Сообщений: 191
1

Даны натуральные числа М и N. Вывести старшую цифру дробной части и младшую цифру целой части числа M/N

06.04.2019, 23:25. Показов 4749. Ответов 10
Метки нет (Все метки)

Сделала программу по заданию, но почему-то результат выводит целочисленный, когда ввожу например числа 3 и 2. Результат должен получится 1,5. Он выводит 1. И в итоге неправильно выводит младшую и старшую цифру. Ставила уже тип float и double. Выводит ошибку: error C2296: %: недопустимо, левый операнд имеет тип "float"

Вот код программы:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{ int m_int, n_float;
   int result;
        float m, n;
cout << "Vvedite 2 naturalnyx chisla: "; 
cin >> m;
cin >> n;
result = m/n;
cout << "Rezult:" << result << endl;
m_int = m/n % 10; // Младшая цифра целой части
n_float = ( 10 * (m - n * (m/n)) ) / n; // Старшая цифра дробной части
cout << "Mladshaya cifra:" << m_int << endl;
cout << "Starshaya cifra:" << n_float  << endl;
system("pause");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2019, 23:25
Ответы с готовыми решениями:

Вывести старшую цифру дробной части и младшую цифру целой части числа
Искал у вас, не нашел. Я новичок в этом деле, если вам не трудно напишите полностью решение ща...

Даны натуральные числа М и N. Вывести старшую цифру дробной части и младшую цифру целой части числа M/N
Даны натуральные числа М и N. Вывести старшую цифру дробной части и младшую цифру целой части числа...

Даны 2 натуральных числа M и N.Вывести старшую цифру дробной части и младшую цифру целой части числа M/N
Помогите пожалуйста написать программки в VBA: 1)Даны натуральные числа М и N. Вывести старшую...

Вывести старшую цифру дробной части и младшую цифру целой части числа
Даны натуральные числа M и N. Вывести старшую цифру дробной части и младшую цифру целой части числа...

10
32 / 21 / 12
Регистрация: 13.09.2017
Сообщений: 74
06.04.2019, 23:38 2
Тип переменной результата должен быть double:
C++
1
double result; // вместо int result
Касательно левого операнда. Попробуйте использовать явное преобразование типов:

C++
1
2
m_int = (int)(m / n) % 10; // Младшая цифра целой части
n_float = ( 10 * (m - n * int(m/n)) ) / n; // Старшая цифра дробной части
Должно сработать.
0
2 / 2 / 0
Регистрация: 08.02.2015
Сообщений: 191
06.04.2019, 23:50  [ТС] 3
double переделала, поставила int, ошибок нет. Но все равно выводится целочисленное значение
0
32 / 21 / 12
Регистрация: 13.09.2017
Сообщений: 74
06.04.2019, 23:56 4
Тут дело в том, для хранения результат m/n - создается временная переменная типа float, и над ней производится операция взятие остатка от деления, что запрещено. Так как операция преобразования типов имеет больший приоритет, чем операция остатка от деления, то все будет в порядке.
Тип переменной, которой присваивается результат не играет в этом отношении никакой роли, так как результат должен будет неявно преобразован в целое число только после вычисления самого выражения, которое вычислено быть не может, по упомянутым выше причинам.

Как вариант, можно было определить для этого отдельную переменную:

C++
1
2
3
4
int toInt = result;
cout << "Rezult:" << result << endl;
m_int = toInt % 10; // Младшая цифра целой части
n_float = ( 10 * (m - n * toInt ) / n); // Старшая цифра дробной части
Добавлено через 3 минуты
Цитата Сообщение от Polina B Посмотреть сообщение
double переделала, поставила int, ошибок нет. Но все равно выводится целочисленное значение
Целочисленное значение в переменной result ?
0
2 / 2 / 0
Регистрация: 08.02.2015
Сообщений: 191
06.04.2019, 23:59  [ТС] 5
Добавила строчку int toInt = result;
Но также выводит целочисленное значение и предупреждение что возможна потеря данных.

Добавлено через 49 секунд
да, целочисленное значение в result. И в случае добавлении строчки тоже

Добавлено через 10 секунд
да, целочисленное значение в result. И в случае добавлении строчки тоже
0
7245 / 4901 / 2821
Регистрация: 18.12.2017
Сообщений: 15,399
07.04.2019, 00:06 6
Polina B,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
int main()
{ 
    int m, n; 
        
    cout << "m="; cin >> m;
    cout << "n="; cin >> n;
 
    cout << m/n%10 << "\n" << (int)((double)m/n*10)%10 << "\n";
 
system("pause");
return 0;
}
0
2 / 2 / 0
Регистрация: 08.02.2015
Сообщений: 191
07.04.2019, 00:13  [ТС] 7
Yetty, спасибо! Можно получается и без вывода результата...
0
7245 / 4901 / 2821
Регистрация: 18.12.2017
Сообщений: 15,399
07.04.2019, 00:17 8
Цитата Сообщение от Polina B Посмотреть сообщение
без вывода результата
цифры выводятся (согласно условию). не совсем понял, что Вы хотите сказать ? как работает разобрались ?
0
2 / 2 / 0
Регистрация: 08.02.2015
Сообщений: 191
07.04.2019, 00:38  [ТС] 9
Yetty, да разобралась. Там не особо сложно. Вопрос в основном был почему выводится целочисленное значение. А так все нормально. Так что спасибо!

Добавлено через 5 минут
У меня еще такой вопрос, пускай будет в этой теме. Тоже сижу еще с одним заданием. Может кто знает как в C++ проинвертировать младшие 4 бита числа. У меня вводится число, переводится в двоичное.

Вот что пока я начала делать:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <bitset>
using namespace std;
int main()
{ int n;
cout << "Enter a number: "; cin >> n;
bitset<8> bitset = n ;
cout << "Binary : " << bitset.to_string<char, char_traits<char>, allocator<char> >() << endl;
//int x=~n;
//cout << "x : " << x << endl;
system("pause");
return 0;
}
Добавлено через 12 минут
Еще такой вариант, но что то опять не так идет:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <bitset>
using namespace std;
int main()
{ unsigned int n;
cout << "Enter a number: "; cin >> n;
bitset<8> bitset = n ;
cout << "Binary : " << bitset.to_string<char, char_traits<char>, allocator<char> >() << endl;
cout << (n ^ (((1 << 5) - 1)<<3)) << endl;
system("pause");
return 0;
}
0
4687 / 2515 / 1045
Регистрация: 07.02.2019
Сообщений: 6,555
07.04.2019, 11:42 10
Цитата Сообщение от Polina B Посмотреть сообщение
Может кто знает как в C++ проинвертировать младшие 4 бита числа.
C++
1
число ^ 0xf
0
2 / 2 / 0
Регистрация: 08.02.2015
Сообщений: 191
07.04.2019, 11:48  [ТС] 11
Я сделала вот так, он инвертирует младшие 4 бита. Только инвертируемое число выводит в десятичном, а как вывести в двоичном?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <bitset>
using namespace std;
int main()
{ unsigned int n;
cout << "Enter a number: "; cin >> n;
bitset<8> bitset = n ;
cout << "Binary : " << bitset.to_string<char, char_traits<char>, allocator<char> >() << endl;
cout << ( n ^ (((1 << 4) - 1)<<0)) << endl;
system("pause");
return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2019, 11:48

Вывести старшую цифру дробной части и младшую цифру целой части числа
Даны натуральные числа M и N. Вывести старшую цифру дробной части и младшую цифру целой части числа...

Вывести старшую цифру дробной части и младшую цифру целой части числа
помогите зделать задачку пожаловайста на любом из &quot;С&quot; Даны натуральные числа М и N. Вывести...

Вывести старшую цифру дробной части и младшую цифру целой части числа
дыны натуральные числа m и n. вывести старшую цифру дробной части и младшую цифру целой части числа...

Вывести старшую цифру дробной части и младшую цифру целой части числа m/n
Даны натуральные числа m и n вывести старшую цифру дробной части и младшую цифру целой части числа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru