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

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

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

Saitei: все вопросы по С задаём в теме Вопрос-Ответ (С). Благодарю за внимание!
НохчиДата: Вторник, 15 Мая 2012, 19:29 | Сообщение # 321
заслуженный участник
Сейчас нет на сайте
Code
if (a%4 == 0)  
  printf("Число кратно четырем");

Этот верный.
Quote

В обычном языке Си, когда мы объявляем функцию main так: "void main(void){", нужно возвращать значение в конце программы или не нужно? (просто в егэ требуется писать на Си, вот не знаю, вдруг ещё отметят как ошибку...)

Ну напиши в конце return; на всякий случай. Это точно не запрещено smile


Многие вопросы по Windows отпадут, если посмотреть тут
SnuuxДата: Вторник, 15 Мая 2012, 19:59 | Сообщение # 322
постоянный участник
Сейчас нет на сайте
Нохчи, ок, огромное спасибо за ответ. С меня + )
TikaraДата: Четверг, 17 Мая 2012, 02:32 | Сообщение # 323
частый гость
Сейчас нет на сайте
Snuux, можно точнее какую ошибку выдаёт среда? И какой компилятор вы используете?

Возвращать значение в void main(){} не обязательно.

Quote (Snuux)
if (a%4 == 0)
printf("Число кратно четырем");


Число кратно четырем, когда остаток при делении числа на 4 равен нулю.
clidiДата: Четверг, 17 Мая 2012, 16:23 | Сообщение # 324
почетный гость
Сейчас нет на сайте
Вопрос о unions and structures. Если скажем есть такой код:
Code

struct cell_type
{
int type;
union
{
int i;
double d;
};
};

cell_type myCell;


myCell будет иметь 2 fields (один который type, другой из union)? Прошу ответить знающих.
НохчиДата: Четверг, 17 Мая 2012, 17:13 | Сообщение # 325
заслуженный участник
Сейчас нет на сайте
clidi, union`у надо дать имя, иначе как к ним обращаться?
Code

struct cell_type  
  {  
  int type;  
  union  
  {  
  int i;  
  double d;  
  }my_union;  
  };  

  cell_type myCell;

теперь myCell имеет два поля - my_union и type. Размер структуры = sizeof(int)+sizeof(double)


Многие вопросы по Windows отпадут, если посмотреть тут
clidiДата: Четверг, 17 Мая 2012, 19:35 | Сообщение # 326
почетный гость
Сейчас нет на сайте
Нохчи, А без имени?
НохчиДата: Четверг, 17 Мая 2012, 19:38 | Сообщение # 327
заслуженный участник
Сейчас нет на сайте
Quote
Нохчи, А без имени?

Всмысле? Как ты потом к членам union`a обращаться собрался?


Многие вопросы по Windows отпадут, если посмотреть тут
clidiДата: Четверг, 17 Мая 2012, 19:56 | Сообщение # 328
почетный гость
Сейчас нет на сайте
Это не я придумал. Так было в лекции.
НохчиДата: Четверг, 17 Мая 2012, 20:04 | Сообщение # 329
заслуженный участник
Сейчас нет на сайте
Тогда вопрос из #324 какой-то некорректный.

Многие вопросы по Windows отпадут, если посмотреть тут
ТритонДата: Воскресенье, 20 Мая 2012, 12:21 | Сообщение # 330
постоянный участник
Сейчас нет на сайте
По правилам плюсов даже класс может быть безымянным, но такой класс бесполезен во всех случаях, а безымянный юньюн может быть доступен по смещению:
Code
struct cell_type   
{   
int type;   
union   
{   
int i;   
double d;   
};   
};   
...
cell_type a;
...
(int)(*(((void *)&a)+sizeof(int)+1))=2;
. Но это тоже наглядное пособие, как делать не надо: на пустом месте наворочено чего попало и смысл декларации члена i потерялся.


Не всё так плохо, как оно есть на самом деле.

Сообщение отредактировал Тритон - Воскресенье, 20 Мая 2012, 12:22
SnuuxДата: Вторник, 22 Мая 2012, 18:12 | Сообщение # 331
постоянный участник
Сейчас нет на сайте
Всем привет. В общем есть 1 вопрос (он по задачкам из ЕГЭ).
На вход программе дается строка (оканчивающаяся точкой):
aa31dsr3vsgtr54gft765gfrt512.
Нужно все извлечь из строки все числа (причем не отдельно "цифры", а именно числа), то есть должно получиться так:
31, 3, 54, 765, 512. И нужно засунуть их в массив (но это уже не суть важно, главное метод извлекания этих самых чисел очень нужен).
P.S. Ах, да, язык не Си++, а си.
P.P.S. Я пробовал делать, но получается криво и в общем не оч. может есть у кого соображения по именно простому коду?
clidiДата: Вторник, 22 Мая 2012, 19:13 | Сообщение # 332
почетный гость
Сейчас нет на сайте
Snuux, http://answers.yahoo.com/question/index?qid=20080902075641AAq7zwM
SnuuxДата: Вторник, 22 Мая 2012, 20:58 | Сообщение # 333
постоянный участник
Сейчас нет на сайте
clidi, там у них фиксированный ввод (2 переменные). А тут может быть случайное кол-во символов.
Georgiy0912Дата: Вторник, 22 Мая 2012, 21:25 | Сообщение # 334
почетный гость
Сейчас нет на сайте
Здрасте smile Подскажите, где можно найти туториалы по матрицам для "самых маленьких") Не где не могу найти. Я как бэ даже не представляю, что это такое, так, что прошу предоставить уроки для нубов. Заранее спасибо.
SnuuxДата: Вторник, 22 Мая 2012, 22:38 | Сообщение # 335
постоянный участник
Сейчас нет на сайте
Georgiy0912, двумерные массивы ищи в гугле.
НохчиДата: Вторник, 22 Мая 2012, 22:45 | Сообщение # 336
заслуженный участник
Сейчас нет на сайте
Code

// string - указатель на введеную строку
   char *tmp = string;
   while(*tmp != '.')
   {
    char *pos = strpbrk(tmp,"0123456789");
    if(pos)
     printf("%d\n",atol(pos));
    else
     break;
    while(isdigit(*pos)) pos++;
    tmp += pos-tmp;
   }

Наверняка есть стандартные функции упрощающие эту задачу, но сейчас искать их не вариант.

Georgiy0912, Фрэнк Луна в своей книжке про DirectX очень доступно объяняет.


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

Сообщение отредактировал Нохчи - Вторник, 22 Мая 2012, 22:51
SnuuxДата: Среда, 23 Мая 2012, 10:29 | Сообщение # 337
постоянный участник
Сейчас нет на сайте
Нохчи, спасибо, буду пробовать)
maXimBestUAДата: Четверг, 24 Мая 2012, 15:46 | Сообщение # 338
почетный гость
Сейчас нет на сайте
Не могу понять в чем моя ошибка, при делении двух чисел получается число с плавающей точкой, я его сразу присваиваю переменной типа float, но оно присваивает только целое число (отбрасывает то что за точкой), как нужно правильно делить?
Вот то что я делал.

Code


     int r;   //Радиус конуса
     int h;  //Высота конуса
     const float P=3.14159;
     float s;

     cout<<"Введите радиус основания конуса\n";
     cin>>r;
     cout<<"Введите высоту конуса\n";
     cin>>h;

     s=(1/3)*P*(r*r)*h;

     cout<<"Обьем конуса "<<s;



Здесь при выполнении действия (1/3) должно получится чтото типо 0.333333, но переменной присваивается 0. В чем моя ошибка?
НохчиДата: Четверг, 24 Мая 2012, 16:00 | Сообщение # 339
заслуженный участник
Сейчас нет на сайте
Code
  s=(1.0f/3.0f)*P*(r*r)*h;


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

Сообщение отредактировал Нохчи - Четверг, 24 Мая 2012, 16:00
zodiakДата: Четверг, 24 Мая 2012, 16:01 | Сообщение # 340
постоянный участник
Сейчас нет на сайте
Quote (maXimBestUA)
Здесь при выполнении действия (1/3) должно получится чтото типо 0.333333, но переменной присваивается 0. В чем моя ошибка?

При делении двух целых чисел и результат будет целым. А вот если сделать так (1.0/3.0) получится то, что нужно.
Ну и прочитай про явное и неявное приведение типов.


Точка зору окремо взятого індивіда завжди суб'єктивна!

Взломщик
Battle City.Net
Поиск:

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