Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2015, 01:34   #1
txthex
Новичок
Джуниор
 
Регистрация: 28.01.2015
Сообщений: 3
По умолчанию ошибка при обьявлении переменной double

Добрый день, вечер, - сразу поясню что я простой энтузиаст у которого познания в программировании нулевые, стал самостоятельно заниматься C - просто из любопытства - давно хотел и собирался

рабочая среда xcode, так вышло что давно сижу на osx

начал заниматься по книге Аарона Хиллегасса objective C програмирование под mac os и ios - по принципу - теория упражнение (так книга и построена)

застрял не могу решить упражнение с переменной double

автор ссылается в качестве образца на прошлое упражнение

прошлое упражнение:
Код:
int main(int argc, const char * argv[])
{
    // «Объявление переменной 'weight' типа float»
    float weight;
    
    // Сохранение числа в переменной
    weight = 14.2;
    
    // Вывод информации для пользователя
    printf("The chicken weighs %f.\n", weight);
    
    // Объявление другой переменной типа float
    float cookingTime;
    
    // Вычисление времени приготовления
    // В данном случае символ, '*' озночает умножить на
    cookingTime = 15.0 + 15.0 * weight;
    
    // Вывод информации для пользователя
    printf("Cook it for %f minutes.\n", cookingTime);
    // успешное завершение функции
    return 0;
}
}
debug log:
The chicken weighs 14.200000.
Cook it for 228.000000 minutes.
Program ended with exit code: 0

задача: (текущее упражнение)

Обьявить 2 переменные типа float и присвоить каждой число с дробной частью, далее - обьявить переменную типа double (двойной точности) - и присвоить ей сумму двух переменных типа float
результат вывести с помощью printf
Код:
int main(int argc, const char * argv[]) {
    
    // обявление переменной a типа float
    float a;
   
    // сохранение числа в пемеренной
    a = 3.2;

    // обявление переменной b типа float
    float b;    

    // сохранение числа в другой пемеренной
    b=15.3;

    //объявление переменной double
    double c;

    c = a + b;

    printf("c");

    return 0;
}
в результате естественно показывает просто "c" в дебаг логе

(у всех упражнений нет решения "где-то" в книге чтобы понять логику ошибок)

что я делаю неправильно - и как по мнению автора мне использовать синтаксис из предидущего упражнения - в котором он тоже объявляет 2 переменные но вычисления производит другим способом.

или я не понял аналогию.

спасибо.

Последний раз редактировалось Stilet; 28.01.2015 в 07:33.
txthex вне форума Ответить с цитированием
Старый 28.01.2015, 02:21   #2
abit
Пользователь
 
Регистрация: 21.10.2014
Сообщений: 43
По умолчанию

ой, не советую вам мораться Си, беритесь сразу за C++))) нет, совет от всей души, возьмите книгу "Эффективное программирование на C++" и наслаждайтесь, Си это просто костыль над Ассемблером, хотя если смотреть дальше C++ костыль над Cи, так что сразу к Java/Haskell/Python, но я отвлёкся, по поводу Вшей проблемы
невнимательно ознакомились с функцией printf
по сути такой вызов, как printf("c") ничего кроме буквы с не выведет, поглядите что пишет автор в предыдущем примере:
printf("The chicken weighs %f.\n", weight);
вот то что между "..." - это кортеж из символов (char), то что %f. - это вставка типа float, \n - символ перевода строки, а после запятой пишут конкретно что вставлять туда из переменных, в общем разберитесь с синтаксисом printf, или лучше забейте, сейчас это не модно и перейдите сразу к std::cout в C++

Последний раз редактировалось abit; 28.01.2015 в 02:35.
abit вне форума Ответить с цитированием
Старый 28.01.2015, 02:37   #3
txthex
Новичок
Джуниор
 
Регистрация: 28.01.2015
Сообщений: 3
По умолчанию

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

p.s спасибо

Последний раз редактировалось Stilet; 28.01.2015 в 07:34.
txthex вне форума Ответить с цитированием
Старый 28.01.2015, 02:45   #4
abit
Пользователь
 
Регистрация: 21.10.2014
Сообщений: 43
По умолчанию

Цитата:
Сообщение от txthex Посмотреть сообщение
да, я методом разковыривания предидущего когда на куски понял что принтф кроме отображения того что в скобках ничего не дает - автор книги не потрудился обратить внимание на спецификатор %f - дэбил - и потрудиться обяснить что он вычисляет и в каких обстоятельствах
если знаете английский, советую пользоваться сайтом cplusplus.com
про спецификаторы там чётко описан синтаксис в форме Бэкуса — Наура (надеюсь, вы знаете что это означает, со времен MS DOS должны знать):
%[flags][width][.precision][length]specifier
конкретно ознакомиться тут :
http://www.cplusplus.com/reference/cstdio/printf/
abit вне форума Ответить с цитированием
Старый 28.01.2015, 23:21   #5
txthex
Новичок
Джуниор
 
Регистрация: 28.01.2015
Сообщений: 3
По умолчанию

подскажите а кто автор указанной вами книги? много книг с похожим названием за разным авторством

спасибо
txthex вне форума Ответить с цитированием
Старый 06.02.2015, 23:04   #6
Михаил Сирицын
Новичок
Джуниор
 
Регистрация: 06.02.2015
Сообщений: 1
По умолчанию

printf ("%d\n", c);

вот так должно получиться, ну или %f точно не помню, я сам новичок

Последний раз редактировалось Михаил Сирицын; 07.02.2015 в 00:40.
Михаил Сирицын вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
при вводе уже существующей переменной появлялось поле с именнами этой переменной. desconocida16 Visual C++ 1 22.02.2014 18:58
Ошибка при обращение к переменной COM объекта koljsch C++ Builder 9 18.09.2012 02:02
Странное накопление double переменной inmyacid C# (си шарп) 2 07.06.2012 19:20
функция pow(double x, double y) Не могу понять в чем ошибка Vlashel Помощь студентам 3 07.10.2010 16:28
Вызов процедуры при обьявлении функции ivannikov Общие вопросы Delphi 6 12.03.2008 13:20