Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Помогите реализовать передачу параметров ключами.  (Прочитано 2892 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн yaromir

  • Автор темы
  • Активист
  • *
  • Сообщений: 670
    • Просмотр профиля
О Мудрый Kwah,
Цитировать
В C для этих же целей используется заголовочный файл math.h и ф-ция
Я окончательно запутался. math.h и cmath - это C и C++ соответственно? Я раньше тоже так считал, потом где-то вычитал, что это ANSI C и STD C, сейчас опять вижу, что это C и C++.
Цитировать
Совет: рекомендую учиться читать, что написано в документации, которой навалом.
Мои настольные книги -  Бьярн Страустрап "Введение в C++" и http://www.cplusplus.com/ Пытаюсь выкраивать время, чтобы читать.
Но наш быдлокодер-препод типо приучает нас к сжатым срокам разработки и при этом ничего не объясняет. Т.е. выращивает "коммерческих программистов" - неважно, что через жопу, главное, чтоб в срок.
Sova777, огромное спасибо.
« Последнее редактирование: 07 Марта 2009, 20:52:51 от Oldwise »

Оффлайн unimix

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Я окончательно запутался. math.h и cmath - это C и C++ соответственно? Я раньше тоже так считал, потом где-то вычитал, что это ANSI C и STD C, сейчас опять вижу, что это C и C++.

Чтобы разобраться посмотри сами заголовочные файлы в "/usr/include". Поищи там "cmath" и "math.h".

Мои настольные книги -  Бьярн Страустрап "Введение в C++" и http://www.cplusplus.com/ Пытаюсь выкраивать время, чтобы читать.
Но наш быдлокодер-препод типо приучает нас к сжатым срокам разработки и при этом ничего не объясняет. Т.е. выращивает "коммерческих программистов" - неважно, что через жопу, главное, чтоб в срок.

Хочешь знать С++ читай книгу Бьерна Страуструпа.
А насчет "коммерческих программистов" - столкнешься когда будешь программировать в какой-нибудь фирме в срок (в разных фирмах разные отношения к качеству). Там свой юмор. :)


Оффлайн yaromir

  • Автор темы
  • Активист
  • *
  • Сообщений: 670
    • Просмотр профиля
Магия. Просто стер все нафиг, скопировал исходники третьей версии, заново сделал все то же самое и программа работает!  :D
Вот работающий код
(Нажмите, чтобы показать/скрыть)
Начинаю работу над пятой версией!  :2funny:
Как-то не по науке double fac (double).
Переписал int fac (int). Вроде в нужных местах поставил static_cast<double>(). В итоге программа печатает шапку таблицы и срывается в бесконечный цикл.
(Нажмите, чтобы показать/скрыть)
Пожалуйста, укажите, в чем ошибка.
Или лучше скажите, как в Эклипсе ставить брейкпоинты и отслеживать выполнение по строкам. Сам не нашел. Насколько понимаю, Эклипс будет всего лишь фронтендом для gdb.
И еще интересует вопрос. Если уж быть совсем правильным, то нужно написать unsigned int fac (unsigned int n), потому что факториал - это произведение всех натуральных чисел до n включительно.
http://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%B8%D0%B0%D0%BB
В данной программе переменная n "для внутреннего пользования", проблемы с неправильными данными могут быть только от моей криворукости.
Но интересует такой вопрос. Написал в gedit'е маленькую программулину.
#include <cstdio>
int main()
{
unsigned int a;
puts("Введите a");
scanf("%u", &a);
printf("%u\n", a);
return 0;
}
Вот результат:
yaromir@debian-yaromir:~/C++$ g++ -Wall -o unsigned unsigned.cpp
yaromir@debian-yaromir:~/C++$ ./unsigned
Введите a
2
2
yaromir@debian-yaromir:~/C++$ ./unsigned
Введите a
-2
4294967294
yaromir@debian-yaromir:~/C++$
Очень странно. Я думал, что минус просто не влезет в переменную и результатом во втором случае будет просто 2. А получилось непонятное число.
Заранее спасибо за ответы.
« Последнее редактирование: 09 Марта 2009, 00:44:31 от Oldwise »

Оффлайн unimix

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Re: Помогите реализовать передачу параметр
« Ответ #33 : 08 Марта 2009, 22:07:30 »
Или лучше скажите, как в Эклипсе ставить брейкпоинты и отслеживать выполнение по строкам. Сам не нашел. Насколько понимаю, Эклипс будет всего лишь фронтендом для gdb.
Ну, вроде как всегда, вызываешь на нужной строке меню и выбираеши "Toggle breakpoint". Далее в режим debug (F11) шагаешь в перспективе "Debug".

Но интересует такой вопрос. Написал в gedit'е маленькую программулину.
#include <cstdio>
int main()
{
unsigned int a;
puts("Введите a");
scanf("%u", &a);
printf("%u\n", a);
return 0;
}
Вот результат:
yaromir@debian-yaromir:~/C++$ g++ -Wall -o unsigned unsigned.cpp
yaromir@debian-yaromir:~/C++$ ./unsigned
Введите a
2
2
yaromir@debian-yaromir:~/C++$ ./unsigned
Введите a
-2
4294967294
yaromir@debian-yaromir:~/C++$
Очень странно. Я думал, что минус просто не влезет в переменную и результатом во втором случае будет просто 2. А получилось непонятное число.
Заранее спасибо за ответы.

Ну так все правильно, ведь ты используешь unsigned int а не signed int. Рассмотри чем они отличаются и как хранятся побитово.

Примерно так:

0 = 0x00000000
1 = 0x00000001
-1 = 0xFFFFFFFF (в 32 разрядных системах)
-2 = 0xFFFFFFFE (в 32 разрядных системах) = 4294967294
« Последнее редактирование: 08 Марта 2009, 22:21:09 от unimix »

 

Страница сгенерирована за 0.052 секунд. Запросов: 25.