Пятница, 15 Ноября 2024, 05:33

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

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

Saitei: все вопросы по С задаём в теме Вопрос-Ответ (С). Благодарю за внимание!
mega-ice-boyДата: Вторник, 18 Июня 2013, 23:13 | Сообщение # 961
частый гость
Сейчас нет на сайте
Надо объявлять переменные максимум и минимум вне цикла? Это обязательно?

Добавлено (18.06.2013, 23:13)
---------------------------------------------
Int igrok=100;
int s;
int s2;
int igrok2=100;
while (true)
{
int max=30;
int min=70;
s=min+(rand()%(min-max)); //генератор случайных чисел.
igrok-=s;
if (igrok<=0)
break;
}
while (true)
{
int max2=10;
int min2=5;
s2=min2+(rand%(min2-max2));
igrok2-=s2;
if (igrok<=0)
break;

вот так можно установить диапазоны? Или как?исправьте?


Хочу стать профессиональным программистом! У меня есть терпение, ум.

Сообщение отредактировал mega-ice-boy - Вторник, 18 Июня 2013, 23:16
pelmenkaДата: Вторник, 18 Июня 2013, 23:28 | Сообщение # 962
Драгоценный Тунеядец
Сейчас нет на сайте
mega-ice-boy, рандомизатор не ест переменные, только константы. int начинается с маленькой буквы. Никогда не пиши названия переменных транслитом (код станет нечитабельным). И т.д.

Сталина в каждый дом!
mega-ice-boyДата: Вторник, 18 Июня 2013, 23:31 | Сообщение # 963
частый гость
Сейчас нет на сайте
Надо объявлять переменные максимум и минимум вне цикла? Это обязательно?

Добавлено (18.06.2013, 23:13)
---------------------------------------------
unsigned int igrok=100;
int s;
int s2;
unsigned int igrok2=100;
while (true)
{
int max=30;
int min=70;
s=min+(rand()%(min-max)); //генератор случайных чисел.
igrok-=s;
if (igrok==0)
break;
}
while (true)
{
int max2=10;
int min2=5;
s2=min2+(rand%(min2-max2));
igrok2-=s2;
if (igrok==0)
break;

вот так можно установить диапазоны? И еще если есть ошибки скажите как исправить?


Хочу стать профессиональным программистом! У меня есть терпение, ум.
pelmenkaДата: Вторник, 18 Июня 2013, 23:41 | Сообщение # 964
Драгоценный Тунеядец
Сейчас нет на сайте
mega-ice-boy, рандомизатор вообще переменные не ест. Только константы или числа, написаные руками.
Например, что-то типа такого:
Код

#include <iostream>
#include <stdlib.h>
#include <time.h>

#define MIN 30     //Объявляем константу MIN
#define MAX 70    //Объявляем константу MAX

using namespace std;

int player[] = {100, 100}, n; //Объявляем массив player, состоящий из 2-х элементов, и переменную n

           int main()
           {
              srand(time(NULL));     //Инициализируем генератор случайных чисел

              while(player[0] > 0 || player[1] > 0 )  //цикл прервется, если оба элемента массива будут <= 0
              {
                  for(n = 0; n < 2; n++) player[n] -= MIN+rand()%(MAX-MIN);    //отнимаем от каждого элемента массива случайное число в заданном диапозоне
                  cout << player[0] << "|" << player[1] <<endl;                        // просто выводим получившиеся значения
              }
             return 0;
           }

Надеюсь нормальные комменты написал к коду happy


Сталина в каждый дом!

Сообщение отредактировал pelmenka - Среда, 19 Июня 2013, 00:13
mega-ice-boyДата: Среда, 19 Июня 2013, 06:30 | Сообщение # 965
частый гость
Сейчас нет на сайте
Мне нужно 3 переменные которые имеет разные диапазоны. И принимает разные случайные числа, в разном диапазоне и еще они должны использоваться в разных циклах!! ! ! Как это пишется? Или мой пример правильный?

Добавлено (19.06.2013, 06:30)
---------------------------------------------
Покажите код который там 3 переменные, имеющие разные диапазоны. Первый от 5 до 10. Второй от 30 до 70. Третий от 100 до 110. И используйте их в РАЗНЫХ циклах одного кода.
КСТАТИ.все эти 3 переменные имеют значение rand().но принимает случайное число в своем диапазоне... Ну давай покажите этот пример. КТО СМОЖЕТ?


Хочу стать профессиональным программистом! У меня есть терпение, ум.

Сообщение отредактировал mega-ice-boy - Среда, 19 Июня 2013, 06:33
TikaraДата: Четверг, 20 Июня 2013, 13:50 | Сообщение # 966
частый гость
Сейчас нет на сайте
Цитата (pelmenka)
mega-ice-boy, рандомизатор вообще переменные не ест. Только константы или числа, написаные руками.

Не вводите людей в заблуждение пожалуйста. Оператор % работает с любыми целыми числами и вовсе не обязательно им быть константными.

Как следствие, следующий пример работает без проблем:

Код
int random(int min, int max){
  return min+rand()%(max-min);
}


Цитата (mega-ice-boy)
Ну давай покажите этот пример. КТО СМОЖЕТ?

Никто не сможет..
pelmenkaДата: Четверг, 20 Июня 2013, 15:15 | Сообщение # 967
Драгоценный Тунеядец
Сейчас нет на сайте
Tikara, гм, ну у меня выдавало ошибку wink Хотя в code::blocks такое часто бывает

Сталина в каждый дом!
KozливоscДата: Четверг, 20 Июня 2013, 18:02 | Сообщение # 968
частый гость
Сейчас нет на сайте
Цитата (pelmenka)
Хотя в code::blocks такое часто бывает

как ошибка компилятора может зависеть от IDE?



"[13:30:24] <groun112> 2) Грамматику я же правельно пишу"
если к последним двум цифрам года рождения прибавить наш возраст в 2011 году, то у всех сумма будет равно 111
pelmenkaДата: Четверг, 20 Июня 2013, 18:29 | Сообщение # 969
Драгоценный Тунеядец
Сейчас нет на сайте
Kozливоsc, легко. Если я прикажу, то она будет зависеть от положения созвездия рака относительно угла наколна моего монитора wacko

Сталина в каждый дом!

Сообщение отредактировал pelmenka - Четверг, 20 Июня 2013, 18:30
IzaronДата: Четверг, 20 Июня 2013, 18:50 | Сообщение # 970
Rammstein forever
Сейчас нет на сайте
Цитата (pelmenka)
Kozливоsc, легко. Если я прикажу, то она будет зависеть от положения созвездия рака относительно угла наколна моего монитора

+1, если в настройках покопаться, то проект легко может не скомпилиться из-за того, что где-то лежит неиспользованная локальная переменная.
GameMixДата: Вторник, 25 Июня 2013, 10:01 | Сообщение # 971
старожил
Сейчас нет на сайте
Привет, знатоки С++! К вам вопрос: как в C++Builder можно, имея один размещенный объект на форме, в определенном событии (например, нажатии кнопки) кодом создать копии того объекта, изменив в копиях некоторые свойства (например, Caption в копии Button1)?

Steel Standoff - 2D аркада.
Мои статьи
ArchidoДата: Вторник, 25 Июня 2013, 17:05 | Сообщение # 972
Сэнсэй
Сейчас нет на сайте
GameMix
Выкинул бы ты этот C++ Builder и взял Qt например, билдер слишком уж изврат, да и устарел он.

А по теме и если мне не изменяет память, то там все аналогично как и в Delphi (ибо с билдером я почти не работал). Инициатором события (или скорее обработчиком) всегда является какой-то объект, который передается параметром в ф-ции обработки события как "TObject* Sender". Поэтому в обработчике достаточно создать новый объект, скопировать необходимые поля из Sender'a и\или дописать свои (еще вроде у TOject есть метод Assign, который и копирует содержание одного в другой).

Код

void TForm::ButtonClick(TObject *Sender)
{
         TButton* Btn = new TButton (this);  

         Btn->Parent = Sender->Parent;
         Btn->Top = Sender->Top
         Btn->Left = 50;
         Btn->Caption = "MySuperButton";
      
         ...

         Btn->Assign(Sender); //еще может так заработать, вместо копирования каждого параметра
}


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Animan2010Дата: Среда, 26 Июня 2013, 10:43 | Сообщение # 973
постоянный участник
Сейчас нет на сайте
В книге Шилдта сказано, что производный класс не наследует приватные члены базового.
_i - приватная переменная базового класса, к ней можно обратиться через публичные функции set_i, get_i.
Но если производный класс не наследует приватные члены базового, то почему в производном классе можно пользоваться функциями, обращающимися к этой самой закрытой переменной? Всё компилируется и работает

Код:


Anima Games
Animan Publishing
ArchidoДата: Среда, 26 Июня 2013, 11:21 | Сообщение # 974
Сэнсэй
Сейчас нет на сайте
Цитата (Animan2010)
В книге Шилдта сказано, что производный класс не наследует приватные члены базового.

Не совсем варажение это правильно, он то наследует их, но не имеет к ним прямого доступа, а через паблик ф-цию базового класса как в данном случае - никаких проблем. Можешь создать в производном новую ф-цию и попытаться в ней обратиться к приватной переменной базового - получишь ошибку.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Среда, 26 Июня 2013, 11:21
Animan2010Дата: Среда, 26 Июня 2013, 11:39 | Сообщение # 975
постоянный участник
Сейчас нет на сайте
Archido, спс

Anima Games
Animan Publishing
GameMixДата: Среда, 26 Июня 2013, 19:13 | Сообщение # 976
старожил
Сейчас нет на сайте
Archido, спасибо, буду пробовать smile

Steel Standoff - 2D аркада.
Мои статьи
netskulДата: Понедельник, 01 Июля 2013, 15:53 | Сообщение # 977
был не раз
Сейчас нет на сайте
всем ку! у меня вопрос:
можно как нибудь зная правый вектор вычислить левый?
Animan2010Дата: Понедельник, 01 Июля 2013, 19:42 | Сообщение # 978
постоянный участник
Сейчас нет на сайте
Почему в C++ нельзя использовать тернарный оператор таким образом:
a > 0 ? cout << a;
Иногда бывает нужно выполнить одну маленькую операцию при условии, и ? короче if ( ), к тому же скобочки ставить и всё-такое.
Вроде бы ? не перегружается (или же я чего-то не знаю?)


Anima Games
Animan Publishing
netskulДата: Понедельник, 01 Июля 2013, 21:07 | Сообщение # 979
был не раз
Сейчас нет на сайте
Цитата (Animan2010)
Почему в C++ нельзя использовать тернарный оператор таким образом:
a > 0 ? cout << a;
Иногда бывает нужно выполнить одну маленькую операцию при условии, и ? короче if ( ), к тому же скобочки ставить и всё-такое.
Вроде бы ? не перегружается (или же я чего-то не знаю?)
так нельзя ты неправильно используешь функцию cout, а вообще можно я точно не помню через оператор так как давно не пользовался делай так и всё:
Цитата
if(a>0){cout<<a;}


Сообщение отредактировал netskul - Понедельник, 01 Июля 2013, 21:08
Animan2010Дата: Понедельник, 01 Июля 2013, 21:09 | Сообщение # 980
постоянный участник
Сейчас нет на сайте
netskul, я имею в виду:
a > 0 ? cout << a : cout << 0; <- можно
a > 0 ? cout << a; <- Нельзя, но хочется


Anima Games
Animan Publishing
Поиск:

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