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

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

Войти
Регистрация
Восстановить пароль
 
blunt
Сообщений: n/a
#1

Ошибка в коде или компилятор не понимает меня? - C++

26.03.2010, 12:30. Просмотров 871. Ответов 4
Метки нет (Все метки)

Добрый день. Изучаю, с недавнего времени, с++ по книге Джесса Либерти "С++ за 21 день". Использую компилятор Dev-C++. И как ни странно возникают проблемы, ошибки, которые, к сожалению не могу отловить сам. Поэтому не вижу другого варианта как обратиться к "гуру" =)
Собственно, сами проблемы:
1) Как реализовать что бы при делении двух int переменных результат заносился в флоат и результат имел и часть после запятой=) То есть примерно следующее:
C++
1
2
3
4
5
6
7
8
9
#include <iostream.h>
int main(){
int x=5;
int y=7;
float z;
z=(float)(x\y); //вот тут сама проблема. Пришла в голову идея заводить еще одну переменную типа float(обзову ее g). И затем перед вычислением z, написать строку g=y+0.0 и в рассчете z использовать уже не y а g
system("pause");
return 0;
}
Так и надо или есть какой-то более легкий и производительный вариант?


2) Есть файл rect.hpp в котором описывается два класса. Содержание файла rect.hpp
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
#include <iostream>
 
class Point{
      public:
             int GetX() const{return itsX};
             int GetY() const {return itsY};
             void SetX(int x) {itsX=x};
             void SetY(int y) {itsY=y};
      private:
              int itsX;
              int itsY;
      }
      
      
class Rectale{
      Rectale(int top, int left, int bottom, int right);
      ~Rectale(){}
      
      int GetTop() const {return top;}
      int GetLeft() const {return left;}
      int GetRight() const {return right;}
      int GetBottom() const {return bottom;}
      
      Point GetUpperLeft() const {return itsUpperLeft;}
      Point GetUpperRight() const {return itsUpperRight;}
      Point GetDownLeft() const {return itsDownLeft;}
      Point GetDownRight() const {return itsDownRight;}
      
      void SetUpperLeft(Point Location){itsUpperLeft=Location;}
      void SetUpperRight(Point Location) {itsUpperRight=Location;}
      void SetDownLeft(Point Location) {itsDownLeft=Location;}
      void SetDownRight(Point Location) {itsDownRight=Location;}
      
      void SetTop(int top){itsTop=top;}
      void SetLeft(int left){itsLeft=left;}
      void SetRight(int right){itsRight=right;}
      void SetBottom(int botton){itsBottom=bottom;}
      
      int GetArea() const;
      
      
      private:
      int itsTop;
      int itsLeft;
      int itsRight;
      int itsBottom;
      Point itsUpperLeft;
      Point itsUpperRight;
      Point itsDownLeft;
      Point itsDownRight;        
      }
И файл day6.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
27
28
#include <rect.hpp>
 
Rectale::Rectale(int top, int left, int bottom, int right){
                     itsTop=top;
                     itsLeft=left;
                     itsBottom=bottom;
                     itsRight=right;
                     
                     itsUpperLeft.SetX(left);
                     itsUpperLeft.SetY(top);
                     itsUpperRight.SetX(right);
                     itsUpperRight.SetY(top);
                     itsDownLeft.SetX(left);
                     itsDownLeft.SetY(bottom);
                     itsDownRight.SetX(right);
                     itsDownRight.SetY(bottom);
                     }
int Rectale::GetArea  () const{
                   int W=itsRight-itsLeft;
                   int H=itsTop-itsBottom;
                   return W*H;
                   }
                   
int main(){
    Rectale myRect(100, 20, 50, 80);
    int Area=myRect.GetArea();
    
}
Так вот Dev-c++ выдает ошибки на строчке "Rectale::Rectale(int top, int left, int bottom, int right)":
4 F:\programs\Dev-Cpp\123\day6.cpp new types may not be defined in a return type
4 F:\programs\Dev-Cpp\123\day6.cpp two or more data types in declaration of `Rectale'
4 F:\programs\Dev-Cpp\123\day6.cpp return type specification for constructor invalid

По первой и последней строчке могу сказать что из я не понимаю, точнее не понимаю что это возвращаемый тип в кострукторе. То по второй строчке могу сказать что не нравятся компилятору типы объявленные в этом методе, самое интересное что при наведении на них они показываются как "LONG top" и тп =)

Помогите, пожалуйста, и подтолкните к правильным действиям. Заранее спасибо=)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2010, 12:30     Ошибка в коде или компилятор не понимает меня?
Посмотрите здесь:

у меня ошибка в коде проверьте!!! - C++
Определить максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы 1) произведения элементов в тех строках,...

Почему у меня ошибка в коде? - C++
Вот код: #include &lt;iostream&gt; using namespace std; int main() { int n; cout&lt;&lt;&quot;Vvedi nomer misyaca.\n&quot;; cin&gt;&gt;n; ...

И снова у меня ошибка в коде - C++
Всем доброго времени суток! У меня не пашет опять прога, я не знаю в чём ошибка, вот задание Реализовать умножение двух матриц А(3*4) и...

Компилятор не понимает std:: - C++
#include &lt;iostream.h&gt; #include &lt;cstdlib.h&gt; #include &lt;math.h&gt; int main() { double a; int i; for (i = 0; i &lt; 10; ++i)...

Неизвестная (для меня) ошибка в коде! - C++
Выпадает вот такая ошибка в коде программы: Вот код: #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace...

Компилятор не понимает тип Array - C++
Подскажите почему ругаеться на Array вот код #define MATRIX_H #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; ...

Функция не понимает меня - C++
Вот попытался написать функцию для подсчета комбинаций &quot;ab&quot; (Читаю книгу, пытаюсь делать упражнения, но застрял что то слишком рано :( ) ...

Почему компилятор не понимает тип bool? - C++
#include &lt;stdio.h&gt; #include &lt;iostream .h&gt; #include &lt;fstream.h&gt; #include &lt;iomanip.h&gt; #include &lt;math.h&gt; #include &lt;string.h&gt; ...

Dev c++, компилятор не понимает функцию toupper() - C++
Короче, вот такая штука; когда хотел использовать функцию touper(), заголовка &lt;cctype&gt;, компилятор эту функцию воспринимает за переменную(...

Компилятор сломался или ошибка? - C++
Требуется написать программу, которая делает перевод вещественного числа в строку. Возникает ошибка во время получения дробной части...

Компилятор не дает написать main без int. Ошибка в книге, или в С так можно? - C++
В книге И.Ш. Хабибуллина &quot;Программирование на языке высокого уровня C/C++&quot; во всех примерах пишут так: main() { } ...

Бьерн Страуструп второе издание ошибка в моей голове или в коде? - C++
void expr::copy(expression* s, int deep) { if (deep == 0) { // копируем только члены *this...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
26.03.2010, 12:47     Ошибка в коде или компилятор не понимает меня? #2
1.
C
1
z=((float)x)/((float)y);
или
C++
1
z=static_cast<float>(x)/static_cast<float>(y);
Обрати внимание, в качестве оператора деления используется прямой слэш, а не обратный
Genius Ignat
26.03.2010, 12:51
  #3

Не по теме:


компилятор не понимает меня?
А если бы меня понимал : это был бы не компилятор, а не понятно что.

Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
26.03.2010, 13:20     Ошибка в коде или компилятор не понимает меня? #4
После объявления классов надо ставить ";"
Свой заголовочный файл надо объявлять в не в угловых скобках, а в кавычках (если, конечно, он не расположен в стандартной директории):
C++
1
#include "rect.hpp"
5-7 строчки в заголовочном файле - пропущены ";" :
C++
1
int GetX() const{return itsX/*Вот здесь*/;};
В классе rectale не отрыты методы:
C++
1
2
3
4
5
6
7
8
9
      
class Rectale{
//Вот здесь должно быть public:
      Rectale(int top, int left, int bottom, int right);
      ~Rectale(){}
      
      int GetTop() const {return top;}
      int GetLeft() const {return left;}
      int GetRight() const {return right;}
Добавлено через 2 минуты
C++
1
2
3
4
5
6
      ~Rectale(){}
      
      int GetTop() const {return top;}
      int GetLeft() const {return left;}
      int GetRight() const {return right;}
      int GetBottom() const {return bottom;}
Здесь вместо return top, я полагаю, нужно return itsTop (вместо left - itsLeft и так далее), так как членов с таким именем у класса нет

Добавлено через 3 минуты
Те же 5-7 строчки в заголовочном файле - после описания методов ";" не нужна:
C++
1
int GetX() const{return itsX/*Вот здесь*/;}/*А вот здесь не надо ";"*/
Добавлено через 2 минуты
В строке 37 опечатка - вместо bottom написано botton:
C++
1
2
      void SetRight(int right){itsRight=right;}
      void SetBottom(int bottom/*Опечатка была здесь*/){itsBottom=bottom;}
Добавлено через 1 минуту
После всех этих правок мне наконец-то удалось скомпилировать программу.

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

Не по теме:

Либо ты очень невнимательно переписывал код, либо твоя книжка - г*вно


А теперь про мелкие недочеты. Функция main у тебя не возвращает значения; конечно, большинство компиляторов произведут возврат неявно, но все же это не есть хорошо.
ЗЫ. Я бы для инициализации членов класса использовал бы списки инициализации (хотя, в принципе, это не существенно)

Добавлено через 2 минуты
ЗЗЫ. Нужно предотвратить повторное включение заголовочного файла конструкцией #ifndef-#define-#endif (или с помощью директивы #pragma once, если твой компилятор ее поддерживает)

Добавлено через 4 минуты
Цитата Сообщение от Genius Ignat Посмотреть сообщение
А если бы меня понимал : это был бы не компилятор, а не понятно что.

Не по теме:

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

blunt
Сообщений: n/a
26.03.2010, 13:42     Ошибка в коде или компилятор не понимает меня? #5
Спасибо большое! И извинюсь за свою полоротость, почти все косяки это моя вина. Пытался не переписывать, а после просмотра кода и понятия алгоритма и цели пытался сам писать, а при проверке не видел всех неточностей. Самое странное что опечатку botton, строчки 5-7, и открытие Rectale исправлял, ну за отсутствия return 0 - мне совсем стыдно. =) Основная ошибка изза чего Dev-C++ не хотел выполнять код это из-за отсутствия ";" после объявления классов.
Стыдно до ужаса, извиняюсь за столь глупые вопросы, постараюсь исправиться в ближайшее время =)
Yandex
Объявления
26.03.2010, 13:42     Ошибка в коде или компилятор не понимает меня?
Ответ Создать тему
Опции темы

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