Суббота, 16 Ноября 2024, 23:40

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос-Ответ (C++)
KornivalДата: Воскресенье, 04 Сентября 2011, 19:10 | Сообщение # 1
The Witcher
Сейчас нет на сайте
Чтобы не создавать отдельную тему на каждый глупый вопрос, предлагаю задавать их здесь.

Saitei: все вопросы по С задаём в теме Вопрос-Ответ (С). Благодарю за внимание!
goldsphereДата: Понедельник, 26 Марта 2012, 11:38 | Сообщение # 181
заслуженный участник
Сейчас нет на сайте
То есть вы в untils.cpp объявили функцию и копировали untils.h прототипом?

FinderX - Android Аркада
НохчиДата: Понедельник, 26 Марта 2012, 11:45 | Сообщение # 182
заслуженный участник
Сейчас нет на сайте
В utils.cpp реализация функции, в utils.h ее прототип. Функция main знает ее прототип(ибо include "utils.h") и этого достаточно чтобы вызвать ее.

Многие вопросы по Windows отпадут, если посмотреть тут
goldsphereДата: Понедельник, 26 Марта 2012, 11:50 | Сообщение # 183
заслуженный участник
Сейчас нет на сайте
Всё, вроде как понял!Когда мы с помощью include "untils.h" "наталкиваемся на прототип(в untils.h), то тем самым мы обращаемся к функции(в untils.cpp)."

FinderX - Android Аркада

Сообщение отредактировал goldsphere - Понедельник, 26 Марта 2012, 14:25
НохчиДата: Понедельник, 26 Марта 2012, 11:58 | Сообщение # 184
заслуженный участник
Сейчас нет на сайте
Да.

Многие вопросы по Windows отпадут, если посмотреть тут
goldsphereДата: Вторник, 27 Марта 2012, 14:30 | Сообщение # 185
заслуженный участник
Сейчас нет на сайте
Привет всем!Я решил поэкспериментировать с ООП.На простейшем примере - сумме двух чисел, используя функцию.Вообщем вот код, проблему опишу ниже:
function.h
Code
#include <iostream>  //объекты cout ; endl.
#include <conio.h>  // _getch();
using namespace std;  // std
void sum( int a, int b)  //объявляем функцию,передаём параметры.
{
   cin >> a;
   cin >> b;
   cout<<a+b<<endl;
}

main.cpp

Code
#include "function.h"  //Подключаем заголовочный файл function.h
void sum(int a, int b);  //Создаём прототип функции
int main()
{
sum();  //Ошибка!Какие параметры мы должны передать?
_getch();
return 0;
}

Я не очень разобрался: какие параметры мы должны передавать в вызов функции, если мы объявляем переменные в function.h как параметры функции?


FinderX - Android Аркада
SnuuxДата: Вторник, 27 Марта 2012, 14:57 | Сообщение # 186
постоянный участник
Сейчас нет на сайте
Cмотри, тут
Code
#include "function.h"  //Подключаем заголовочный файл function.h       
       int sum(int a, int b);  //Создаём прототип функции
         
       int main()       
       {       
int a,b;
       cout<<sum(a,b);  //Тут функции посылается эти числа (введеные пользователем) (и мы её выводим в консоль)... Как то так...

       _getch();       
       return 0;       
       }


Code
#include <iostream>        
       #include <conio.h>       
       using namespace std;        
       int sum( int a, int b) //тут эти числа передаются, делай в функции что хочешь)
       {       
         cin >> a;       
         cin >> b;       
        return a+b;   //тут возвращаем значение суммы из функции..
       }


Вот что то типо того.

Добавлено (27.03.2012, 14:57)
---------------------------------------------
Только насчет правильности разных файлов не знаю... В общем в одном файле должно выглядеть так:
Code
#include <iostream>
#include <conio.h>
using namespace std;

int sum( int a, int b){ //тут эти числа передаются, делай в функции что хочешь)
// причем тут не обязательно  те же названия переменных должны быть. Можно взять x и y. Главное чтоб одинаковый тип был.
return a+b; //тут возвращаем значение суммы из функции..
}

int main(){
int a,b;
cin>>a; //Ввод пользователя
cin>>b;
cout<<sum(a,b); //Тут функции посылается эти числа (введеные пользователем) (и мы её выводим в консоль).

_getch();
return 0;
}


Сообщение отредактировал Snuux - Вторник, 27 Марта 2012, 15:11
goldsphereДата: Вторник, 27 Марта 2012, 15:04 | Сообщение # 187
заслуженный участник
Сейчас нет на сайте
Спасибо!)

FinderX - Android Аркада
mopoДата: Вторник, 27 Марта 2012, 15:30 | Сообщение # 188
был не раз
Сейчас нет на сайте
goldsphere,
я вот немного исправил твой код у меня работает.
function.h
Code
#include <iostream>     
   #include <conio.h>    
int a, b, summa;
   using namespace std;    
   int sum(int a,int b)    
   {   
     cin >> a;
     cout << endl;
     cin >> b;   
     summa=a+b;
return summa;
   }


main.cpp
Code
#include "function.h"    
   int sum(int a,int b);     
   int main()   
   {   
   summa=sum(a,b);   
   cout << summa;
   _getch();   
   return 0;   
   }


немного не успел с ответом))


Источник усталости - не в теле, а в уме. Ты можешь гораздо больше, чем думаешь.

Сообщение отредактировал mopo - Вторник, 27 Марта 2012, 15:32
goldsphereДата: Вторник, 27 Марта 2012, 18:39 | Сообщение # 189
заслуженный участник
Сейчас нет на сайте
А как пользоваться типом "Строка"?
Я подключаю библу #include <string>
Объявляю переменную
string perem1;(кстати string у меня не подсвечивает, как все остальные типы)
Когда я хочу сравнить эту переменную с какой-нибудь строкой,он выдаёт ошибку(типа для этой переменной необходим тип bool)А мне bool не нужен, мне нужен string)))


FinderX - Android Аркада
НохчиДата: Вторник, 27 Марта 2012, 19:03 | Сообщение # 190
заслуженный участник
Сейчас нет на сайте
Наркоманы какие-то. Какого **** реализацию функции пихать в хедер?
Quote (goldsphere)
string perem1;(кстати string у меня не подсвечивает, как все остальные типы) Когда я хочу сравнить эту переменную с какой-нибудь строкой,он выдаёт ошибку(типа для этой переменной необходим тип bool)А мне bool не нужен, мне нужен string)))

Накосячил значит где-то, код покажи.


Многие вопросы по Windows отпадут, если посмотреть тут
mopoДата: Вторник, 27 Марта 2012, 19:19 | Сообщение # 191
был не раз
Сейчас нет на сайте
goldsphere,
Если ты сравниваешь две строки то используй тип char, и для сравнения используй функцию int strcmp(const char *str1, char *str2);
Вот небольшой код
Code
#include <iostream>
using namespace std;
int main()
{ int i;
      char password[]="Hello, Neo";
      char userPassword[10];
      cout <<"Password-> ";
      cin>>userPassword;
      if ((i=strcmp(password, userPassword))==0)
           cout<<"You are right! "<<'\n';
      else
           cout<<"You are wrong!"<<'\n';
      return 0;
}

программа сравнивает строку которую ты ввел, с заложенной в программе. Эта функция различает прописные и строчные функции, а чтобы не различала используй int stricmp(const char *str1, const char *str2);


Источник усталости - не в теле, а в уме. Ты можешь гораздо больше, чем думаешь.

Сообщение отредактировал mopo - Вторник, 27 Марта 2012, 20:19
НохчиДата: Вторник, 27 Марта 2012, 19:51 | Сообщение # 192
заслуженный участник
Сейчас нет на сайте
Quote (mopo)
Если ты сравниваешь две строки то используй тип char, и для сравнения используй функцию int strcmp(const char *str1, char *str2);

Зачем?


Многие вопросы по Windows отпадут, если посмотреть тут
mopoДата: Вторник, 27 Марта 2012, 20:18 | Сообщение # 193
был не раз
Сейчас нет на сайте
Нохчи,
Просто тип string, в С++ мне не сильно нравиться, и зачем его использовать если можно и с типом char, все то же самое делать))) каждый использует то что ему больше нрааиться)))


Источник усталости - не в теле, а в уме. Ты можешь гораздо больше, чем думаешь.
DonKorleoneДата: Вторник, 27 Марта 2012, 20:26 | Сообщение # 194
частый гость
Сейчас нет на сайте
goldsphere, тип string у тебя не подсвечивается, потому что не является стандартным типом. Это всего лишь класс. И для него перегружены операторы. Используй оператор == .
С ним так же работают и алгоритмы от STL.


Сообщение отредактировал DonKorleone - Вторник, 27 Марта 2012, 20:27
goldsphereДата: Среда, 28 Марта 2012, 14:43 | Сообщение # 195
заслуженный участник
Сейчас нет на сайте
Компилируется с ошибкой!В чём проблема?


FinderX - Android Аркада

Сообщение отредактировал goldsphere - Среда, 28 Марта 2012, 14:47
НохчиДата: Среда, 28 Марта 2012, 14:47 | Сообщение # 196
заслуженный участник
Сейчас нет на сайте
Quote

class resource  //Cоздаём клас отвечающий за ресурсы
{
public:  //Публичный
int gold;  //Золото
int forest;  //Дерево
int diamond;  //Бриллианты
};


Многие вопросы по Windows отпадут, если посмотреть тут

Сообщение отредактировал Нохчи - Среда, 28 Марта 2012, 14:49
goldsphereДата: Среда, 28 Марта 2012, 14:50 | Сообщение # 197
заслуженный участник
Сейчас нет на сайте
Как я мог забыть!Спасибо ещё раз, Нохчи!))))

FinderX - Android Аркада

Сообщение отредактировал goldsphere - Среда, 28 Марта 2012, 14:51
warzesДата: Среда, 28 Марта 2012, 15:46 | Сообщение # 198
участник
Сейчас нет на сайте
goldsphere, исправь рассы на расы. Оно пишется с одной с.

>>int rasa;
Исправь на int race; Вообще мой тебе совет - найди программу переводчик если не знаешь английского (я вот промт использовал). И когда надо дать имя, переводи его на английский. Все, польза будет, потому что во-первых русские слова английским текстом - это дурной тон, а во-вторых - быстро выучишь кучу слов, что поможет при изучении английского


Мой блог
Вики DirectX
goldsphereДата: Среда, 28 Марта 2012, 16:01 | Сообщение # 199
заслуженный участник
Сейчас нет на сайте
Упс shy !Всё исправил!Спасибо)
У меня ещё проблемка появилась(Суть проблемы ниже)(Урезанный код):
Code
#include <iostream>  //cout; endl;
#include <conio.h>  //getch();
#include <string>

using namespace std;  //std::

class Unit  //Юниты людей
{
public:
   string name;
   int treatment; //Лечеие
   int number;  //Количество
   int damage;  //Урон
   int hp;  //Здоровье
   int mana;  //Мана
   int power;  //Энергия
   void print()
   {
    cout<<"Лечение: "<<treatment<<endl;
  cout<<"Урон: "<<damage<<endl;
  cout<<"Здоровье: "<<hp<<endl;
  cout<<"Мана: "<<mana<<endl;
  cout<<"Энергия: "<<power<<endl;
   }
};
int main()
{ //Люди
   Unit Knight;  //Люди -> Юниты -> Рыцарь
   {  
  Knight.name = "Knight";
         Knight.damage = 23;
  Knight.hp = 120;
  Knight.mana = 0;
  Knight.power = 100;
   }
Unit Knight.print(); //Ошибка!Подчёркивает точку.
getch();
return 0;
}

Пишет:Нужна ;
Я проверил весь код, всё на месте!Я даже на ютюбе посмотрел урок с классами.У меня буквально тоже самое!Но не работает.В чём ошибка?

Добавлено (28.03.2012, 16:01)
---------------------------------------------
Всё вопрос решён!Не актуально!


FinderX - Android Аркада
AgentToxaДата: Среда, 28 Марта 2012, 18:49 | Сообщение # 200
был не раз
Сейчас нет на сайте
---------------------------------------------
Quote (goldsphere)
У меня ещё проблемка появилась(Суть проблемы ниже)(Урезанный код):

Я тут кое что поправил. У меня работает.
int main()
{ //????
Unit Knight; //
{
Knight.name = "Knight";
Knight.damage = 23;
Knight.hp = 120;
Knight.mana = 0;
Knight.power = 100;

Knight.print();
getch();
return 0;
}}

Добавлено (28.03.2012, 18:49)
---------------------------------------------
А если честно, я не понял зачем ты описание объекта заключил в фигурные скобки.

В данном случае скобка после строки "Unit Knight; //", и одна из скобок в самом конце программы будут лишними.

P.S. Опоздал с ответом)))


Учусь программировать на C++)

Сообщение отредактировал AgentToxa - Среда, 28 Марта 2012, 18:55
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг