Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> функция не возвращает результат 
V
    Опции темы
Larrikin
Дата 17.2.2008, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 15.8.2007

Репутация: нет
Всего: нет



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

кусок ncalcd.c:
Код

// debug
            fprintf(stdout, "we got from calc: %f\n", calc(valueX, neuro[n].act, valueY) );


полный calc.c:
Код

#include <common.h>

double calc(double arg1, char act, double arg2)
{
    double result;

    result = arg1 + arg2;

    switch (act)
    {
        case '+':
            result = arg1 + arg2;
            break;
        case '-':
            result = arg1 - arg2;
            break;
        case '*':
            result = arg1 * arg2;
            break;
        case '/':
            if (arg2 == 0){
                result = arg1 / (arg2 + 0.000001);
            } else result = arg1 / arg2;
            break;
        default:
            puterror("Error: unknown action");
            break;
    }
// debug
            fprintf(stdout, "calc: %f %c %f = %f\n", arg1, act, arg2, result);

    return result;
}



результат работы:

calc: -45.000000 + -17.000000 = -62.000000
we got from calc: 0.000000

PM MAIL WWW ICQ   Вверх
bilbobagginz
Дата 17.2.2008, 05:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 4
Всего: 317



1. возможно у вас есть другая ф-я calc()
2. возможно вы не компилируете новый корретный файл, а пользуетесь старым объектом

сотрите все объекты и соберите программу с нуля




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Larrikin
Дата 17.2.2008, 05:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 15.8.2007

Репутация: нет
Всего: нет



> grep calc *.c *.h
calc.c:double calc(double arg1, char act, double arg2)
calc.c:                 fprintf(stdout, "calc: %f %c %f = %f\n", arg1, act, arg2, result);
ncalcd.c:                       fprintf(stdout, "we got from calc: %f\n", calc(valueX, neuro[n].act, valueY) );
ncalcd.c:                       neuro[n].value = calc(valueX, neuro[n].act, valueY) ;
ncalcd.c:                               "We got from MySQL and calc: %i value of %i '%c' value of %i = %f\n",


собираю скриптом

> cat compile.sh
#!/bin/sh
gcc -o ncalcd `ls *.c` -I `pwd` -I /usr/local/include/ -I /usr/local/include/mysql -L /usr/local/lib/mysql -l mysqlclient
>


Это сообщение отредактировал(а) Larrikin - 17.2.2008, 05:43
PM MAIL WWW ICQ   Вверх
Mayk
Дата 17.2.2008, 05:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 5
Всего: 134



3) возможно ф-ция calc не объявлена  в ncalcd.c и потому компилятор думает что она возвращает int.
Цитата

08:47:dvl:~/src$ cat a.c
#include <stdio.h>
#include <time.h>

int main( int argc, char** argv )
{
        printf("%f",x());
}

08:47:dvl:~/src$ cat b.c
double x()
{
    return -62.0;
}
08:48:dvl:~/src$ gcc -c {a.c,b.c}
08:48:dvl:~/src$ ./aa
0.0000000


Добавлено через 7 минут и 22 секунды
Цитата(Larrikin @  17.2.2008,  09:39 Найти цитируемый пост)
> grep calc *.c *.h
calc.c:double calc(double arg1, char act, double arg2)
calc.c:                 fprintf(stdout, "calc: %f %c %f = %f\n", arg1, act, arg2, result);
ncalcd.c:                       fprintf(stdout, "we got from calc: %f\n", calc(valueX, neuro[n].act, valueY) );
ncalcd.c:                       neuro[n].value = calc(valueX, neuro[n].act, valueY) ;
ncalcd.c:                               "We got from MySQL and calc: %i value of %i '%c' value of %i = %f\n",

Точно не объявлена. Засунь её прототип куда-нить чтоб ncald.c смог найти.


Это сообщение отредактировал(а) Mayk - 17.2.2008, 05:49


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Larrikin
Дата 17.2.2008, 06:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 15.8.2007

Репутация: нет
Всего: нет



действительно нужно было руками прототип объявлять...
спасибо
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.1813 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.