Вопрос-Ответ (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; на всякий случай. Это точно не запрещено
Многие вопросы по 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 |
заслуженный участник
Сейчас нет на сайте
| Всмысле? Как ты потом к членам 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 |
почетный гость
Сейчас нет на сайте
| Здрасте Подскажите, где можно найти туториалы по матрицам для "самых маленьких") Не где не могу найти. Я как бэ даже не представляю, что это такое, так, что прошу предоставить уроки для нубов. Заранее спасибо.
|
|
| |
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
|
|
| |