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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2016, 12:40   #1
CortesGames
Пользователь
 
Аватар для CortesGames
 
Регистрация: 23.10.2016
Сообщений: 86
По умолчанию [Язык СИ]: Табуляция функции с использованием трёх операторов цикла.

Вообщем пишу на С программу вычисляющую значение у для уравнения y=e^(2*x-1.5)-ln(x+2), диапазон xє(1;2) значение х надо рассмотреть в N точках.И при этом использовать три оператора цикла. И вывести значение у в каждой точке х на экран.
Вот код который я набросал, он выводит 31 значение не из диапазона и шаг кривой. Уверен что в коде я намутил фигни и всё равно умудрился использовать только 2 оператора цикла. Если кто поможет разобратся как правильно расставить циклы так чтобы всё работало буду очень благодарен.
Вот что я накидал:
Код:
#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
#define N 31 
int main() { 
    double x,y,z,i,j; 
    int n; 
    printf("Type x like (i,j):"); 
    scanf("%lf,%lf\n",&i,&j); 
    z=fabs(i-j); 
    x=0; 
    for(n=0;n<N;n++){ 
        while(x<=z){ 
            x+=z/N; 
            y=1+exp(2*x-1.5)-log(x+2); 
            printf("Y=%f\n", y);
        } 
    } 
}
Вот что в итоге в консоли:
Код:
Type x like (i,j):1 2
Y=0.528853
Y=0.528965
Y=0.530379
Y=0.533157
Y=0.537367
Y=0.543083
Y=0.550383
Y=0.559353
Y=0.570084
Y=0.582673
Y=0.597226
Y=0.613856
Y=0.632684
Y=0.653839
Y=0.677459
Y=0.703694
Y=0.732701
Y=0.764650
Y=0.799723
Y=0.838114
Y=0.880029
Y=0.925691
Y=0.975336
Y=1.029217
Y=1.087603
Y=1.150782
Y=1.219063
Y=1.292773
Y=1.372264
Y=1.457909
Y=1.550109
Y=1.649289
Насылаю баги по фотографии

преимущественно себе

Последний раз редактировалось Вадим Мошев; 23.10.2016 в 13:28.
CortesGames вне форума Ответить с цитированием
Старый 23.10.2016, 12:50   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

1. Под тремя циклами в условии понималось, что вам надо написать три варианта программы с разными типами цикла.
2. Ваш фор там ни к селу, ни к городу
3. Шаг надо вычислять сразу и до цикла тем более, что там деление.
4. ОТкуда у вас в вычислении у появилась 1?
p51x вне форума Ответить с цитированием
Старый 23.10.2016, 12:56   #3
CortesGames
Пользователь
 
Аватар для CortesGames
 
Регистрация: 23.10.2016
Сообщений: 86
По умолчанию

1. Ясно, я сам как-то недогадался до этого.
2. Просто раньше программа выводила бесконечное количество значений у=0.00000 и только после установки фора оно начало выводить 31 значение
3.Понял.
4.Еденица появилась в надежде что оно начнёт выводить значения не от 0.5 а от еденицы так как диапазон от 1 до 2, но безрезультатно. Знаю что ступил.
Насылаю баги по фотографии

преимущественно себе
CortesGames вне форума Ответить с цитированием
Старый 23.10.2016, 13:00   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
2. Просто раньше программа выводила бесконечное количество значений у=0.00000 и только после установки фора оно начало выводить 31 значение
Ну так ясень пень, вы ж границе не котролируете. Вернее она у вас странная...
Для вайла обычно в начале задается начальное условие, т.е. i (у вас 0), в конце итерации делается шаг, а в самом условии проверка на вторую границу (у вас почему-то с модулем длины отрезка).
p51x вне форума Ответить с цитированием
Старый 23.10.2016, 13:08   #5
CortesGames
Пользователь
 
Аватар для CortesGames
 
Регистрация: 23.10.2016
Сообщений: 86
По умолчанию

Код:
#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
#define N 31
int main() 
{ 
    double x,y,z,i,j,k; // i,j - межі проміжку, y - значення в точці х, 
    printf("Type x like (i,j)"); 
    scanf("%lf,%lf\n",&i,&j); 
    z=fabs(i-j); 
    x=i; 
    k=z/N;
    while (x<=j)
    { 
    y=1+exp(2*x-1.5) - log(x+2); 
    printf("Y=%f\n", y);
    x=x+k; 
    } 
}
Про границу не понял, остальное вроде исправил.
Насылаю баги по фотографии

преимущественно себе
CortesGames вне форума Ответить с цитированием
Старый 23.10.2016, 13:11   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

1 в формуле не убрали
p51x вне форума Ответить с цитированием
Старый 23.10.2016, 13:13   #7
CortesGames
Пользователь
 
Аватар для CortesGames
 
Регистрация: 23.10.2016
Сообщений: 86
По умолчанию

Теперь после считывания с клавиатуры не происходит ничего. Программа возвращает контроль мне.
Насылаю баги по фотографии

преимущественно себе
CortesGames вне форума Ответить с цитированием
Старый 23.10.2016, 13:26   #8
CortesGames
Пользователь
 
Аватар для CortesGames
 
Регистрация: 23.10.2016
Сообщений: 86
По умолчанию

Вы ещё сдесь?
Насылаю баги по фотографии

преимущественно себе
CortesGames вне форума Ответить с цитированием
Старый 23.10.2016, 13:46   #9
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Код:
double fun(double x){
// вычисление значения
}

void proc(const double& left, const double& right, const int& n){
    double step = (right-left)/n;

    for(int i = 0; i< n/3;i++){
        printf("%f\n",fun(left + step*i));
        ++i;
    }

    int i = n/3;
    while(i<2*n/3){
        printf("%f\n",fun(left + step*i));
        ++i;
    }

    do{
        printf("%f\n",fun(left + step*i));
        ++i;
    }
    while(i*step<=right-left);
}

int main(){
    proc(1,2,31);
    return 0;
}
Я считаю подобные задания тупыми.
a.k.a. Angelicos Phosphoros
Мой сайт

Последний раз редактировалось New man; 23.10.2016 в 13:53. Причина: Добавил три цикла.
New man вне форума Ответить с цитированием
Старый 23.10.2016, 13:59   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
scanf("%lf%lf", &i, &j);
p51x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужна программа QControl программа для внутрилабораторного контроля качества Версия 5.5. миньен Софт 7 02.03.2014 00:28
Программа на Pascal в Lazarus и программа для одномерного массива целых чисел Yegorka Lazarus, Free Pascal, CodeTyphon 13 20.12.2012 18:02
Программа с применением записей и программа с применение множеств smert99 Помощь студентам 0 16.06.2011 23:14
Программа открыается если есть другая программа. bookkc Паскаль, Turbo Pascal, PascalABC.NET 12 14.10.2009 20:09