Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 59

Ошибки в программе

16.01.2013, 12:08. Показов 1067. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
rational.h

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
#define _Rational_h_
#include <iostream>
 
using namespace std;
int nod(int p, int q) {
  if (p < 0) p = -p;
  if (q < 0) q = -q;  
  while (p != 0 && q != 0)
    if (p >= q)
      p %= q;
    else
      q %= p;
  return p + q;
}
 
class Rational {
 public:
  Rational() : numerator_(0), denominator_(1) {}
  Rational(int number) : numerator_(number), denominator_(1) {}
  Rational(int numerator, int denominator)
    : numerator_(numerator), denominator_(denominator) {
    optimize_();
  }
  int getNumerator() const { return numerator_; }
  int getDenominator() const { return denominator_; }
 private:
  void optimize_() {
    int nod_ = nod(numerator_, denominator_);
    numerator_ /= nod_;
    denominator_ /= nod_;
    if (denominator_ < 0) {
      numerator_ = -numerator_;
      denominator_ = -denominator_;
    }
  }
  int numerator_;
  int denominator_;
};
 
std::ostream &operator<<(std::ostream &stream, const Rational &number) {
  return stream << number.getNumerator() << "/" << number.getDenominator();
}
 
Rational operator+(const Rational &p, const Rational &q) {
  return Rational(p.getNumerator() * q.getDenominator() +
    q.getNumerator() * p.getDenominator(),
    p.getDenominator() * q.getDenominator());
    
}
 
Rational operator-(const Rational &p, const Rational &q) {
  return Rational(p.getNumerator() * q.getDenominator() -
    q.getNumerator() * p.getDenominator(),
    p.getDenominator() * q.getDenominator());
}
 
Rational operator*(const Rational &p, const Rational &q) {
  return Rational(p.getNumerator() * q.getNumerator(),
    p.getDenominator() * q.getDenominator());
}
 
Rational operator/(const Rational &p, const Rational &q) {
  return Rational(p.getNumerator() * q.getDenominator(),
    p.getDenominator() * q.getNumerator());
}
main.cpp

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
#include "rational.h"
#include <iostream>
 
using namespace std;
int main() 
{
setlocale(LC_ALL,"russian");
Rational p, q;
Rational x1(5);
Rational x2(2.3);
Rational x3(3);
Rational x4(1);
Rational x5(1.5);
cin >> p;
cin >> q;
  std::cout <<"-p = " << "-" << p << std::endl;
  std::cout <<"1/p = " << x4/p << std::endl;
  std::cout << "p + q = " << (p + q) << std::endl;
  std::cout << "p - q = " << (p - q) << std::endl;
  std::cout << "p * q = " << (p * q) << std::endl;
  std::cout << "p / q = " << (p / q) << std:: endl;
  std::cout << "(x1*p)+(x2*q) = " << (x1*p)+(x2*q) << std:: endl;  
  std::cout << "(x3+(p*q))/(p+(x4-q)) = " << (x3+(p*q))/(p+(x4-q)) << std:: endl;  
  std::cout << "x4/(p+(x5*q)) = " << x4/(p+(x5*q)) << std:: endl;  
system("pause");
}
ошибки

Code
1
2
3
4
1>c:\documents and settings\gnizdilo.us\мои документы\visual studio 2010\projects\zadacha 1.2\zadacha 1.2\main.cpp(10): warning C4244: аргумент: преобразование "double" в "int", возможна потеря данных
1>c:\documents and settings\gnizdilo.us\мои документы\visual studio 2010\projects\zadacha 1.2\zadacha 1.2\main.cpp(13): warning C4244: аргумент: преобразование "double" в "int", возможна потеря данных
1>c:\documents and settings\gnizdilo.us\мои документы\visual studio 2010\projects\zadacha 1.2\zadacha 1.2\main.cpp(14): error C2678: бинарный ">>": не найден оператор, принимающий левый операнд типа "std::istream" (или приемлемое преобразование отсутствует)
1>          c:\program files\microsoft visual studio 10.0\vc\include\istream(1053): может быть "std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &&,signed char *)"
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.01.2013, 12:08
Ответы с готовыми решениями:

Найти ошибки в данной программе (известно что есть только 2 ошибки)
У меня в модуле с програмирования задание: Найти ошибки в данной программе (известно что есть только 2 ошибки) .model small .data ...

Ошибки в программе
Подскажите пожалуйста почему при вводе имени на руском языке выводится только 'Привет и знак !'а имя выводится в виде каких то непонятных...

Ошибки в программе
#include &lt;stdio.h&gt; int main() { int a, b; a = 5; b = (int*)malloc(i * sizeof(int)); FILE *fa; fa = fopen(&quot;filename&quot;, &quot;r&quot;); ...

17
 Аватар для v.a.l.i.d
425 / 390 / 113
Регистрация: 21.09.2012
Сообщений: 913
16.01.2013, 12:20
Цитата Сообщение от yulla Посмотреть сообщение
Rational p, q;

cin >> p;
cin >> q;
Для этого класса нужно перегрузить операцию ввода
0
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 59
16.01.2013, 13:13  [ТС]
v.a.l.i.d, я сейчас сама это поняла... а как это правильно сделать? немного непонятно)
0
 Аватар для v.a.l.i.d
425 / 390 / 113
Регистрация: 21.09.2012
Сообщений: 913
16.01.2013, 13:27
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Rational {
    friend std::istream &operator>>(std::istream &stream, Rational &number);
 public:
 
 ...
 
}
 
std::istream &operator>>(std::istream &stream, Rational &number)
{
    std::cout << "Enter numerator: ";
    stream >> number.numerator;
    
    std::cout << "Enter denominator: ";
    stream >> number.denominator;
 
    return stream;
}
Вроде так.
Но я могу ошибаться. Сейчас сам эту тему учу.
0
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 59
16.01.2013, 14:24  [ТС]
Цитата Сообщение от v.a.l.i.d Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Rational {
    friend std::istream &operator>>(std::istream &stream, Rational &number);
 public:
 
 ...
 
}
 
std::istream &operator>>(std::istream &stream, Rational &number)
{
    std::cout << "Enter numerator: ";
    stream >> number.numerator;
    
    std::cout << "Enter denominator: ";
    stream >> number.denominator;
 
    return stream;
}
Вроде так.
Но я могу ошибаться. Сейчас сам эту тему учу.
куча ошибок сразу) Наверное, все-таки не то...

Добавлено через 4 минуты
ошибки

c:\users\1\documents\visual studio 2010\projects\98765\98765\rational.h(43) : error C2039: numerator: не является членом "Rational"
1> c:\users\1\documents\visual studio 2010\projects\98765\98765\rational.h(16) : см. объявление "Rational"
1>c:\users\1\documents\visual studio 2010\projects\98765\98765\rational.h(46) : error C2039: denominator: не является членом "Rational"
c:\users\1\documents\visual studio 2010\projects\98765\98765\rational.h(16) : см. объявление "Rational"

C++ (Qt)
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
#define _Rational_h_
#include <iostream>
 
using namespace std;
int nod(int p, int q) {
  if (p < 0) p = -p;
  if (q < 0) q = -q;  
  while (p != 0 && q != 0)
    if (p >= q)
      p %= q;
    else
      q %= p;
  return p + q;
}
 
class Rational {
friend std::istream &operator>>(std::istream &stream, Rational &number);
 public:
  Rational() : numerator_(0), denominator_(1) {}
  Rational(int number) : numerator_(number), denominator_(1) {}
  Rational(int numerator, int denominator)
    : numerator_(numerator), denominator_(denominator) {
    optimize_();
  }
  int getNumerator() const { return numerator_; }
  int getDenominator() const { return denominator_; }
 private:
  void optimize_() {
    int nod_ = nod(numerator_, denominator_);
    numerator_ /= nod_;
    denominator_ /= nod_;
    if (denominator_ < 0) {
      numerator_ = -numerator_;
      denominator_ = -denominator_;
    }
  }
  int numerator_;
  int denominator_;
};
std::istream &operator>>(std::istream &stream, Rational &number)
{
    std::cout << "Enter numerator: ";
    stream >> number.numerator;
    
    std::cout << "Enter denominator: ";
    stream >> number.denominator;
 
    return stream;
}
 
std::ostream &operator<<(std::ostream &stream, const Rational &number) {
  return stream << number.getNumerator() << "/" << number.getDenominator();
}
 
Rational operator+(const Rational &p, const Rational &q) {
  return Rational(p.getNumerator() * q.getDenominator() +
    q.getNumerator() * p.getDenominator(),
    p.getDenominator() * q.getDenominator());
    
}
 
Rational operator-(const Rational &p, const Rational &q) {
  return Rational(p.getNumerator() * q.getDenominator() -
    q.getNumerator() * p.getDenominator(),
    p.getDenominator() * q.getDenominator());
}
 
Rational operator*(const Rational &p, const Rational &q) {
  return Rational(p.getNumerator() * q.getNumerator(),
    p.getDenominator() * q.getDenominator());
}
 
Rational operator/(const Rational &p, const Rational &q) {
  return Rational(p.getNumerator() * q.getDenominator(),
    p.getDenominator() * q.getNumerator());
}
0
Twilight Parasite
 Аватар для Invader_Zim
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
16.01.2013, 14:28
yulla, На хабре была статья про перегрузку операторов. В гугле банят нещадно?)
0
Pied Piper
 Аватар для ArmanPrestige
237 / 228 / 57
Регистрация: 15.01.2013
Сообщений: 855
16.01.2013, 14:30
как то странно вы класс описываете. сперва паблики. потом прайват методоы. потом только поля которые юзаются в методах не красиво. да и зачем новую тему создавать? у вас же страя была? не засоряйте форум!

п.с. у вас поле denominator_ а вы обращаетесь к denominator. тоже самое и с numerator. будьте внимательнее
0
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 59
16.01.2013, 14:37  [ТС]
Цитата Сообщение от Invader_Zim Посмотреть сообщение
yulla, На хабре была статья про перегрузку операторов. В гугле банят нещадно?)
просто у меня нет времени разбираться в статьях( мне хотя бы ошибки исправить... завтра нужно сдавать, причем не только эту программу

Добавлено через 5 минут
ArmanPrestige, о, заработало) а почему вместо того, чтобы вывести -p выводит дробное число?
например, Enter numerator: 7
Enter denominator: 4
-p = -7/4

должно по идее выводиться просто -7 ?
0
Twilight Parasite
 Аватар для Invader_Zim
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
16.01.2013, 14:40
yulla, Внимательно смотри свой перегруженый оператор.
Как будто ночью нельзя работать. И не так уж много времени уходит на одностраничную статью. Явно меньше чем на контактики, и ожидание ответов на форуме.
0
Pied Piper
 Аватар для ArmanPrestige
237 / 228 / 57
Регистрация: 15.01.2013
Сообщений: 855
16.01.2013, 14:42
Цитата Сообщение от yulla Посмотреть сообщение
просто у меня нет времени разбираться в статьях( мне хотя бы ошибки исправить... завтра нужно сдавать, причем не только эту программу

Добавлено через 5 минут
ArmanPrestige, о, заработало) а почему вместо того, чтобы вывести -p выводит дробное число?
например, Enter numerator: 7
Enter denominator: 4
-p = -7/4

должно по идее выводиться просто -7 ?
у вас же в перегрузке написано
C++
1
stream << number.getNumerator() << "/" << number.getDenominator();
вот и выводиться numerator(=7) потом слэш(/) и потом denominator(4)

Добавлено через 1 минуту
Цитата Сообщение от Invader_Zim Посмотреть сообщение
Явно меньше чем на контактики
спалил девушку

п.с. я так понимаю вот статья (тык) о которой говорил товарищ Invader_Zim. тоже советую к прочтению!
0
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 59
16.01.2013, 14:57  [ТС]
сделала так


C++ (Qt)
1
2
3
4
std::ostream &operator<<(std::ostream &stream, const Rational &number) {
  return stream << number.getNumerator();
 
}
почему у меня два раза запрашивается?
Enter numerator:
Enter denominator:
Enter numerator:
Enter denominator:

в итоге считает первый numerator и последний denominator
0
 Аватар для v.a.l.i.d
425 / 390 / 113
Регистрация: 21.09.2012
Сообщений: 913
16.01.2013, 14:58
Цитата Сообщение от yulla Посмотреть сообщение
почему у меня два раза запрашивается?
Enter numerator:
Enter denominator:
Enter numerator:
Enter denominator:
Потому что

Цитата Сообщение от yulla Посмотреть сообщение
cin >> p;
cin >> q;
0
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 59
16.01.2013, 15:16  [ТС]
убрала cin >> q

все равно бред выводит

Enter numerator: 5
Enter denominator: 3


-p = -5
1/p = 3
p + q = 5
p * q = 5
p / q = 0
(x1*p)+(x2*q) = 1
(x3+(p*q))/(p+(x4-q)) = 25
x4/(p+(x5*q)) = 9
0
Twilight Parasite
 Аватар для Invader_Zim
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
16.01.2013, 15:20
yulla, Хм, а чего ты хочеш от программы? Может быть проблема в этом?)
0
 Аватар для v.a.l.i.d
425 / 390 / 113
Регистрация: 21.09.2012
Сообщений: 913
16.01.2013, 15:24
Цитата Сообщение от yulla Посмотреть сообщение
std::cout <<"1/p = " << x4/p << std::endl;
здесь явно ошибка
C++
1
std::cout <<"1/p = " << 1/p << std::endl;
0
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 59
16.01.2013, 15:36  [ТС]
почему ошибка? ведь под x4 подразумевается 1

C++ (Qt)
1
Rational x4(1);
Добавлено через 2 минуты
Invader_Zim, пользователь должен вводить числа, а программа должна вычислять значения выражений
0
 Аватар для Schizorb
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
16.01.2013, 15:45
Цитата Сообщение от yulla Посмотреть сообщение
убрала cin >> q
Зачем? Вы же вводите две дроби.
Enter numerator: 4
Enter denominator: 5
Enter numerator: 2
Enter denominator: 5

Это значит вы ввели 4/5 и 2/5, а потом производятся расчеты с ними (вроде бы даже правильные).
0
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 59
16.01.2013, 16:14  [ТС]
Цитата Сообщение от Schizorb Посмотреть сообщение
Зачем? Вы же вводите две дроби.
Enter numerator: 4
Enter denominator: 5
Enter numerator: 2
Enter denominator: 5

Это значит вы ввели 4/5 и 2/5, а потом производятся расчеты с ними (вроде бы даже правильные).
допустим, складываются 4/5 и 2/5, почему тогда в результате получается 6?

Добавлено через 5 минут
C++ (Qt)
1
2
3
std::ostream &operator<<(std::ostream &stream, const Rational &number) {
  return stream << number.getNumerator() << "/" << number.getDenominator();
}
если эта строка выглядит так, то дроби вычисляются правильно, но неправильно -p и 1/p

надо чтобы и то и то одновременно правильно было)

Добавлено через 11 минут
А хотя... да, вроде правильно все) спасибо большое всем!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.01.2013, 16:14
Помогаю со студенческими работами здесь

Ошибки в программе
Помогите, пожалуйста, понять почему возникают следующие ошибки: Main.java:5: error: cannot find symbol ArrayList&lt;Egg&gt; myList =...

Ошибки в программе
Не работает ввод и вывод не могу понять в чем ошибки. P.S. Программа работает если данные присваивать в сегменте данных. Вот код: ...

Ошибки в программе
Мне необходимо реализовать алгоритм сортировки каскадным слиянием со специальным распределением. Я написал программу: #include...

ошибки в программе
Помогите разобраться что не так в программе... #include &lt;conio.h&gt; #include &lt;iostream.h&gt; #include &lt;math.h&gt; #define PI...

Ошибки в программе
Задан текст. Напечатать слова этого текста отличные от последнего слова и удалить в каждом из них первую букву. #include &lt;iostream&gt;...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru