• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Проблема с возвратом значений из внешки

IronForge

Ученик
Регистрация
13 Янв 2013
Сообщения
3
Реакции
0
Баллы
0
Проблема с возвратом значений из внешки

Программа по реализации метода простых итераций. В 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 же выводится кучей несуразных цифр. Иногда иными символами.
Что нужно исправить?
 
функция не может возвращать несколько значений. вам необходимо использовать ссылки...
в основной программе делаешь массив с двумя элементами и передаешь в функцию в качестве ссылки/указателя а дальше в этот же массив в своей функции записываешь то, что хочешь вернуть
 
Аргх... Буду благодарен, если приведете пример или же прямо в вышеуказанном коде.
В частности не ясно, что указывать в передаваемых параметрах при объявлении внешки.
 
Вот только зачем использовать 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;
}
 
Бредовая привычка с какого-то примера.
Огромное спасибо!
 
Назад
Сверху