Остаток от деления - C (СИ) (77627)

Узнай цену своей работы

Формулировка задачи:

Задача. Ввести три числа найти среднее арифметическое и остаток от деления в зависимости от типа данных (int, float) вывести результат целым или дробным числом соответственно. Помогите пожалуйста найти ошибки в программе. Сама программа компилируется но остаток от деления не правильно показывает. Компилятор C++ Builder 6.
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<iostream.h>

//---------------------------------------------------------------------------
float middle (float,float,float);
float ost (float,float,float);
int main(void)
{ float e; float f; float g; float x;
  float op; int m;  float r;  bool xxx;  int o; int k;
 
cout<<"Enter type of numbers dec (1) or fraction (0)\n";
cin>>xxx;
o=xxx;
if( xxx!=0 )
{
  cout<<"Enter e,f,g\n";
  cin>>e>>f>>g;
  op=ost(e,f,g);
  k=middle(e,f,g);
 
  cout<<k<<"- middle\n";
  cout<<op<<"-%\n";}
else
{ cout<<"Enter e,f,g\n";
  cin>>e>>f>>g;
  x=middle(e,f,g);
  cout<<x<<"- middle\n";
  cout<<fmod(ost(e,f,g),3)<<"-%\n";
 
}
getch();
}

Решение задачи: «Остаток от деления»

textual
Листинг программы
#include <iostream>
#include <cmath>
using namespace std;
 
template <class T>
T middle(T a, T b, T c)
{
    return (a + b + c)/3;
}
 
template <class T>
T ostatok(T a, T b, T c)
{
    double ipart;
    T ost, sum = (a + b + c);
    if(static_cast <T> (0.1) == 0)
        ost = (static_cast <int> (sum - 3*middle(a,b,c)) ) % 3;
    else
        ost = static_cast <T> (modf(sum/3,&ipart));
    return ost;
}
 
int main()
{
    int iA, iB, iC;
    double dA, dB, dC;
    cout<<"Enter integers\n";
    cout<<"a = ";cin>>iA;
    cout<<"b = ";cin>>iB;
    cout<<"c = ";cin>>iC;
    cout<<"Sr arifm : "<<middle (iA, iB, iC)<<endl;
    cout<<"Ostatok  : "<<ostatok(iA, iB, iC)<<endl;
    cout<<"Enter doubles\n";
    cout<<"a = ";cin>>dA;
    cout<<"b = ";cin>>dB;
    cout<<"c = ";cin>>dC;
    cout<<"Sr arifm : "<<middle (dA, dB, dC)<<endl;
    cout<<"Ostatok  : "<<ostatok(dA, dB, dC)<<endl;
    system("pause");
    return 0;
}

Объяснение кода листинга программы

В этом коде представлены две функции: middle и ostatok. Функция middle вычисляет среднее значение трех чисел, а функция ostatok вычисляет остаток от деления суммы трех чисел на 3. В функции ostatok сначала определяется переменная sum, которая содержит сумму трех чисел. Затем проверяется, является ли сумма чисел целым числом. Если да, то в переменную ost записывается остаток от деления sum на 3. В противном случае, используется функция modf для получения дробной части от sum/3, а затем полученное значение приводится к типу T. В функции main пользователю предлагается ввести три целых числа, а затем три числа с плавающей точкой. После ввода чисел выводятся результаты вычисления среднего значения и остатка от деления на 3 для обоих наборов чисел.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5
Похожие ответы