Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 13.01.2013, 10:08   #1 (permalink)
IronForge
Новичок
 
Регистрация: 13.01.2013
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Проблема с возвратом значений из внешки

Программа по реализации метода простых итераций. В main только ввод и вывод, во внешке сама работа.
Проблема в том, что никак не удается нормально вернуть значения. Ни черта не знаю, как осуществлять возврат и использование нескольких значений, нигде не смог найти стоящей информации об этом.

Цитата:
#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
{
extern double func(double x0, double x1, double eps);
double x0, x1, eps;
printf("Enter x0, eps");
scanf("%lf", &x0);
scanf("%lf", &eps);
printf("x0=%lf, x1=%lf", func(x0, x1, eps));
getch();
}

double func (double x0, double x1, double eps)
{
double k, z;
m2: z=fabs(-(sin(x0)));
if (z>=1)
{
printf("Process terminated");
return 0;
}
else
x1=cos(x0);
z=fabs(x1-x0);
if (z>eps)
{
x0=x1;
goto m2;
}
else
return x0, x1;
}
Возврат осуществляется, но только для x0. X1 же выводится кучей несуразных цифр. Иногда иными символами.
Что нужно исправить?
IronForge вне форума   Ответить с цитированием

Старый 13.01.2013, 10:08
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

К вашему вниманию предлагаю аналогичные темы, прочитайте

Расчёт значений функции двух переменных
Проблема с вебкамерой на видеочатах + проблема с установкой драйверов на вебку
Дана квадратная матрица.Найти наибольшее из значений...

Старый 13.01.2013, 10:59   #2 (permalink)
kreol
Member
 
Аватар для kreol
 
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
По умолчанию

функция не может возвращать несколько значений. вам необходимо использовать ссылки...
в основной программе делаешь массив с двумя элементами и передаешь в функцию в качестве ссылки/указателя а дальше в этот же массив в своей функции записываешь то, что хочешь вернуть
kreol вне форума   Ответить с цитированием
Старый 13.01.2013, 11:14   #3 (permalink)
IronForge
Новичок
 
Регистрация: 13.01.2013
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Аргх... Буду благодарен, если приведете пример или же прямо в вышеуказанном коде.
В частности не ясно, что указывать в передаваемых параметрах при объявлении внешки.
IronForge вне форума   Ответить с цитированием
Старый 13.01.2013, 11:40   #4 (permalink)
kreol
Member
 
Аватар для kreol
 
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
По умолчанию

Вот только зачем использовать extern в данной программе?
Код:
#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
{
    double x[2];
    extern double func(double *x, double eps);
    double x0, x1, eps;
    printf("Enter x0, eps");
    scanf("%lf", &x[0]);
    scanf("%lf", &eps);
    func(x, eps);
    printf("x0=%lf, x1=%lf",x[0], x[1]);
    getch();
}

double func (double *x, double eps)
{
    double k, z;
    m2: z=fabs(-(sin(x[0])));
    if (z>=1)
    {
        printf("Process terminated");
        return 1;
    }
    else
        x[1]=cos(x[0]);
    z=fabs(x[1]-x[0]);
    if (z>eps)
    {
        x[0]=x[1];
        goto m2;
    }
    else
        x[0] = x[0];
        x[1] = x[1];
        return 0;
}
kreol вне форума   Ответить с цитированием
Старый 13.01.2013, 11:42   #5 (permalink)
IronForge
Новичок
 
Регистрация: 13.01.2013
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Бредовая привычка с какого-то примера.
Огромное спасибо!
IronForge вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 23:37.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.