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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Katerina Seliva
 Аватар для Katerina Seliva
234 / 43 / 4
Регистрация: 05.01.2011
Сообщений: 197
#1

Найти и исправить ошибки в коде - C++

30.04.2011, 21:57. Просмотров 856. Ответов 11
Метки нет (Все метки)

Помогите, пожалуйста=)

Задание: Используя класс, который преобразует дюймы в мм, создайте: функцию извлечения, предлагающую пользователю ввести число дюймов. функцию вставки для вывода на экран числа дюймов и мм.
У меня две проблемы: выводит ошибки [ missing function header ] и [ 'operator <<' is ambiguous ]
А также не особо понимаю, какие параметры нужно ввести в тело программы, там где main

Заранее спасибо!


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
#include "stdafx.h"
#include <iostream>
#include <ostream>
#include <fstream>
#include <istream>
 
using namespace std;
 
 
class inches_to_mm
{
double inches;
double mm;
public:
    void set(double in)
    { inches=in;
    mm=in*25.4;
    }
friend ostream & operator <<(ostream & stream, inches_to_mm ob);
friend istream & operator >>(istream & stream, inches_to_mm & ob);
};
 
istream & operator >>(istream & stream, inches_to_mm & ob);
{
cout <<"Vvedite skolko dujm";
stream>> ob.inches;
return stream;
};
 
ostream & operator <<(ostream & stream, inches_to_mm ob);
{
stream <<"Vy vveli"<<ob.inches<<"dujm i"<<ob.mm<<"mm"endl;
return stream;
}
main(void)
{
inches_to_mm inches;
cout << inches;
cin >> inches;
cout << inches;
return 0;
            
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2915 / 1344 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
01.05.2011, 00:11     Найти и исправить ошибки в коде #2
23, 30 строки -- убрать ";" в конце объявления функции
32 строка -- добавить "<<" перед "endl"
35 строка -- заменить "main(void)" на "int main(int argc, char *argv[])"
Katerina Seliva
 Аватар для Katerina Seliva
234 / 43 / 4
Регистрация: 05.01.2011
Сообщений: 197
01.05.2011, 10:57  [ТС]     Найти и исправить ошибки в коде #3
Спасибо, одна ошибки про header ушла, но пришла другая:
'inches' : cannot access private member declared in class 'inches_to_mm'
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
#include "stdafx.h"
#include <iostream>
#include <ostream>
#include <fstream>
#include <istream>
 
using namespace std;
 
 
class inches_to_mm
{
double inches;
double mm;
public:
    void set(double in)
    { inches=in;
    mm=in*25.4;
    }
friend ostream & operator <<(ostream & stream, inches_to_mm ob);
friend istream & operator >>(istream & stream, inches_to_mm & ob);
};
 
istream & operator >>(istream & stream, inches_to_mm & ob)
{
cout <<"Vvedite skolko dujm";
stream>> ob.inches;
return stream;
};
 
ostream & operator <<(ostream & stream, inches_to_mm ob)
{
stream <<"Vy vveli"<<ob.inches<<"dujm i"<<ob.mm<<"mm"<<endl;
return stream;
}
 
int main(int argc, char *argv[])
{
inches_to_mm inches;
cout << inches;
cin >> inches;
cout << inches;
return 0;
            
}
ValeryLaptev
Эксперт С++
1016 / 795 / 48
Регистрация: 30.04.2011
Сообщений: 1,616
01.05.2011, 11:06     Найти и исправить ошибки в коде #4
Оставьте только iostream в инклудах. И кстати, какая среда программирования?
Katerina Seliva
 Аватар для Katerina Seliva
234 / 43 / 4
Регистрация: 05.01.2011
Сообщений: 197
01.05.2011, 11:14  [ТС]     Найти и исправить ошибки в коде #5
Убрала, но это ничего не изменило, программирую на Microsoft Visual C++ 6.0
ValeryLaptev
Эксперт С++
1016 / 795 / 48
Регистрация: 30.04.2011
Сообщений: 1,616
01.05.2011, 11:39     Найти и исправить ошибки в коде #6
Тогда уберите fstream и напишите iostream.h
prazuber
108 / 108 / 3
Регистрация: 29.04.2010
Сообщений: 240
01.05.2011, 11:46     Найти и исправить ошибки в коде #7
ValeryLaptev, ой насоветуете сейчас... нету в MSVS iostream.h.


Katerina Seliva, у меня ваш код компилится нормально, разве что варнинг на не инициализированную переменную inches в мейне. Возможно, ваш компилятор путается между inches как переменной и как полем класа inches_to_mm, лучше в мейне переменную назвать по-другому как-то. Ну и инициализировать.
Katerina Seliva
 Аватар для Katerina Seliva
234 / 43 / 4
Регистрация: 05.01.2011
Сообщений: 197
01.05.2011, 11:49  [ТС]     Найти и исправить ошибки в коде #8
Когда сделала iostream.h, oшибки убрались, запускается программа и появляется вот такое:
Миниатюры
Найти и исправить ошибки в коде  
ValeryLaptev
Эксперт С++
1016 / 795 / 48
Регистрация: 30.04.2011
Сообщений: 1,616
01.05.2011, 12:15     Найти и исправить ошибки в коде #9
Цитата Сообщение от PraZuBeR Посмотреть сообщение
ValeryLaptev, ой насоветуете сейчас... нету в MSVS iostream.h.
Вы не обратили внимания, что у нее VC++6. Это система 1998 года, создавалась еще ДО стандарта. И там старая система ввода-вывода работает гораздо лучше, чем новая.
Я сам похлебал в свое время проблем с этим. Поэтому, пусть iostream.h напишет.

Добавлено через 3 минуты
Цитата Сообщение от Katerina Seliva Посмотреть сообщение
Когда сделала iostream.h, oшибки убрались, запускается программа и появляется вот такое:
Ну, это уже легко.
сначала cin >> inches;
Потом inches.set(inches);
потом cout << inches;
Katerina Seliva
 Аватар для Katerina Seliva
234 / 43 / 4
Регистрация: 05.01.2011
Сообщений: 197
01.05.2011, 12:42  [ТС]     Найти и исправить ошибки в коде #10
Вот как на данный момент выглядит программа, с учетом всех ошибок

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
#include "stdafx.h"
#include "iostream.h"
 
 
 
 
class dujms_to_mm
{
double inches;
double mm;
public:
    void set(double in)
    { inches=in;
    mm=in*25.4;
    }
friend ostream & operator <<(ostream & stream, dujms_to_mm ob);
friend istream & operator >>(istream & stream, dujms_to_mm & ob);
};
 
istream & operator >>(istream & stream, dujms_to_mm & ob)
{
cout <<"Vvedite skolko dujm: ";
stream>> ob.inches;
return stream;
};
 
ostream & operator <<(ostream & stream, dujms_to_mm ob)
{
stream <<"Vy vveli: "<<ob.inches<<" dujm i "<<ob.mm<<"mm"<<endl;
return stream;
}
 
int main(int argc, char *argv[])
{
dujms_to_mm inches;
cin >> inches;
inches.set(inches);
cout << inches;
      
return 0;
            
}

Ошибка вылезла: 'set' : cannot convert parameter 1 from 'class dujms_to_mm' to 'double'
ValeryLaptev
Эксперт С++
1016 / 795 / 48
Регистрация: 30.04.2011
Сообщений: 1,616
01.05.2011, 13:11     Найти и исправить ошибки в коде #11
Цитата Сообщение от Katerina Seliva Посмотреть сообщение
Вот как на данный момент выглядит программа, с учетом всех ошибок

Ошибка вылезла: 'set' : cannot convert parameter 1 from 'class dujms_to_mm' to 'double'
Вы вводите объект класса dujms_to_mm, а в set - параметр типа double. Надо так:
в классе:
Код
void set()
    {
    mm=inches*25.4;
    }
В main:
Код
dujms_to_mm inches;
cin >> inches;
inches.set();
cout << inches;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2011, 13:40     Найти и исправить ошибки в коде
Еще ссылки по теме:

Найти и исправить ошибки в коде C++
C++ Найти и исправить ошибки в коде (массивы)
Найти и исправить ошибки в коде C++
Найти и исправить ошибки в коде C++
C++ Найти и исправить ошибки в коде

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

Или воспользуйтесь поиском по форуму:
Katerina Seliva
 Аватар для Katerina Seliva
234 / 43 / 4
Регистрация: 05.01.2011
Сообщений: 197
01.05.2011, 13:40  [ТС]     Найти и исправить ошибки в коде #12
Урааа!!! Спасибо, теперь всё работает!
Yandex
Объявления
01.05.2011, 13:40     Найти и исправить ошибки в коде
Ответ Создать тему
Опции темы

Текущее время: 07:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru