Форум программистов, компьютерный форум CyberForum.ru

Массивы. Классы. Нахождение среднего значения дробей - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Функция должна возвращать новый массив, состоящий из отрицательных элементов исходного массива http://www.cyberforum.ru/cpp-beginners/thread1233518.html
У меня есть задание: написать функцию (процедуру) с параметрами для обработки одномерного массива целочисленных данных (количество элементов массива ≤50). Функция (процедура) должна возвращать новый массив, состоящий из отрицательных элементов исходного массива. Есть функция, мне помогли ее написать: int otricatel (int mass, int n,int result) { int count=0; for(int...
C++ Как работает функции подсчёта символов в строке Раньше программировал на VB. Сейчас изучаю С++. Встретил в интернете эти функции подсчёта симолов в строке. С первой всё понятно. Перебираем символы пока не встретим '\0'. int strlen(char s){ int length = 0; for (; s != '\0'; length++); return (length); } Но почему работают две эти? http://www.cyberforum.ru/cpp-beginners/thread1233512.html
C++ Функция должна возвращать наименьший положительный элемент массива
Помогите, не могу написать этот клочек кода...голова кипит.. Есть постановка задания: Написать функцию (процедуру) с параметрами для обработки одномерного массива целочисленных данных (количество элементов массива ≤50). Функция (процедура) должна возвращать наименьший положительный элемент массива.
C++ Ошибка "Ascess violation" при выводе массива
В проекте есть две такие строчки: for(int L6x=0;L6x<=argcnt;L6x++){for(int L6y=0;L6y<argsize;L6y++){cout<<ComArgumentList;}cout<<endl;} for(int L7=0;L7<=argcnt;L7++)delete ComArgumentList;delete ComArgumentList; Первая выводит содержимое двухмерного массива символов, а вторая удаляет его. Если хотя бы одна из этих строчек присутствует, то выскакивает ошибка "Ascess violation: write on adress...
C++ После возвращении вектор пуст, хотя в dll size другая информация http://www.cyberforum.ru/cpp-beginners/thread1233498.html
передаю вектор по ссылке в функцию dll он должен вставить элемент но после возвращении вектор пуст,хотя в dll size показывает правильно
C++ Переделать строчный калькулятор через ООП Друзья, имею отличный строчный калькулятор, сделанный через процедурное программирование. #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <conio.h> //#include <string> using namespace std; подробнее

Показать сообщение отдельно
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
25.07.2014, 01:56     Массивы. Классы. Нахождение среднего значения дробей
Посмотрите,возможно вам поможет.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
//класс рациональная дробь
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
 class rat
 {
   int ch; // числитель
   int zn;//знаменатель
   friend istream &operator>>(istream&, rat&);
   friend ostream &operator<<(ostream&, rat&);
   int nod(int, int);// nod() вычисляет наибольший общий делитель x и y
   int abs(int);// abs возвращает x для положительных и -x для отрицательных
 public:
  rat(int=0, int=1);//конструктор с параметрами
  void norm();
  rat operator*(const rat&) const;
  rat operator+(const rat&) const;
  rat operator-(const rat&) const;
  rat operator/(const rat&) const; // деление рациональных (дробных) чисел
};
int rat::abs(int x)
{
if(x<0) return (-1)*x;
 return x;
}
int rat::nod(int x, int y)
{
if(x==0 || y==0) return 1;
while(x!=y)
if(x>y)
 x=x-y;
else y=y-x;
return x;
}
rat::rat(int x, int y)// конструктор инициализирует рац. число // по умолчанию 0/1
{
if(!y || !x)
{
ch=0;zn=1;
}
ch=x;
zn=y;
this->norm();
}
void rat::norm()//norm() для сокращения дроби.
{
int sign=1;
if(ch*zn< 0)
 sign=(-1);
 ch=abs(ch);
zn=abs(zn);
int b=nod(ch, zn);
if(ch==0 || zn==0)
zn=1;
if(b==1) return;
ch=(ch/b)*sign;
zn=zn/b;
}
rat rat::operator*(const rat& rvalue) const
{
rat temp;
temp.ch=ch * rvalue.ch;
temp.zn=zn * rvalue.zn;
temp.norm();
 return temp;
}
rat rat::operator+(const rat& rvalue) const
{
rat temp;
temp.ch=rvalue.zn*ch + rvalue.ch*zn;
temp.zn=zn * rvalue.zn;
temp.norm();
 return temp;
}
rat rat::operator-(const rat& rvalue) const
{
rat temp;
temp.ch=rvalue.zn*ch - rvalue.ch*zn;
temp.zn=zn * rvalue.zn;  temp.norm(); return temp;
 }
rat rat::operator/(const rat& rvalue) const
{
rat temp;
temp.ch=ch* rvalue.zn;
temp.zn=zn * rvalue.ch;
temp.norm();
 return temp; }
 
istream &operator>>(istream &stream_in, rat &rvalue)
{
cout << "Введите числитель и знаменатель (a/b): ";
stream_in >> rvalue.ch; stream_in.ignore();
stream_in >> rvalue.zn;
 cout << endl;
 return stream_in;
}
ostream &operator<<(ostream &stream_out, rat &rvalue)
{
stream_out << "Рациональная дробь: " << rvalue.ch << "/" << rvalue.zn <<endl;
return stream_out;
}
int main()
{
system("chcp 1251 > nul");
rat a, b; //  объявление объектов типа rat
cin >>a;  // ввод первого рационального числа
cin >> b; // ввод второго рационального числа
rat c;
c = a/b;//деление перегруженным оператором /
cout << c << endl;
rat d;
d = a * b;//умножение перегруженным оператором *
cout << d << endl;
rat k;
k = a + b;//сложение перегруженным оператором +
cout << k << endl;
return 0;
}
 
Текущее время: 05:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru