Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/С++ | Прошу помочь в написании кода...

Ответить
Настройки темы
C/С++ | Прошу помочь в написании кода...
Sox Sox вне форума

Аватара для Sox

Пользователь


Сообщения: 54
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изменения
Автор: Savant
Дата: 29-10-2005
У меня получилось вот такое:
Код: Выделить весь код
#include <stdio.h>
#include <math.h>
int main()
{
double A, YM, H, C, X, D, Y;
int j;/*j - это шаг функции, ведь может бытьот 0 до 15 значений функции вообще*/
 
/*A- ввод */
printf ("A=");
scanf ("%lf", &A);
/*H - ввод */
printf ("H=");
scanf ("%lf", &H);
/*C - ввод */
printf ("C=");
scanf ("%lf", &C);
/*YM - ввод */
printf ("YM=");
scanf ("%lf", &YM);
/* показать - "argument | funktsion" */
printf ("argument | funktsion");
/* показать - горизонтальную черту*/
printf ("___________________");
/* Operation X = A */
X=A; 
 
/* Operation D = H */
D=H;
/* Operation j = 0*/
j=0;
while (j<15)
{
/* показать - X, " | " */
printf ("X,|");
}
if(j<=15)
{
/* Operation X = X + D */
X=X+D;
/* Operation D = D * C */
D=D*C;
/* Operation j = j + 1 */
j=j+1;
if (X<=0);
{
printf ("Y=undefined");
}
if (atan(X)<=0);
{
printf ("Y=undefined");
}
 
for( j=0; j<=15)
if(Y > YM) break;
/* Y =ln(atan x*sin 5x) + SQRT(3x*x*x)*/
printf ("Y=ln(atan(X)*sin(5*X) + sqrt(3*X*X*X )\n");
} 
};
Задание такое:
дается A - начальное значение аргумента X

YM - максимальное значение функции Y

H – шаг функции
С - коэффициент

Х вычисляется по формуле A, A + H, A + H + C*H, ....

функция дана для вычисления Y

тобишь вычисляется для каждого шага X а потом для него Y

и выводятся значения покуда Y не превысит YM, но всего не больше, чем 15 значений функции.
Сама функция: ___

y = ln( atan x sin 5x) + Ö3x3
Вертикальная черта отделяет x от y, горизонтальная черта отделяет их от самих значений.
Выполняется в консоли.

Вроде бы не сложно, но я всеж начинающий... :-) поэтому хотелось бы узнать, правильно ли программа составлена.... пытался компилировать... компилится, вроде ошибок нет так как исправлял, но .exe файла не создается, видно, что-то с компилятором,
Вроде все описал...

-------
-Мы - за собак...
-А мы - ЗаПЧЕЛ


Отправлено: 21:06, 29-10-2005

 

Аватара для Savant

Старожил


Сообщения: 300
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


Sox
То, что сразу видно :
1) убери точки с запятой на концах строк : if (X<=0); и if (atan(X)<=0);
2) функция по-английски function

бррр... а как это вообще работает ? j = 0; while (j < 15) { printf ("X,|"); } вечный цикл однако

Отправлено: 21:52, 29-10-2005 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

Sox Sox вне форума Автор темы

Аватара для Sox

Пользователь


Сообщения: 54
Благодарности: 1

Профиль | Отправить PM | Цитировать


1)Убрал, 2)исправил...
Цитата:
j = 0; while (j < 15) { printf ("X,|"); }
Хм... по идее это задумывалось так, что начальный шаг =0, когда X=A, потом , пока таким образом не дойдем до 15 шага согласно условию, надо выводить Х и черту... думаешь, что-то здесь надо убрать?... может быть...
вроде как j=0 - это предварительное присваивание значения... может, каккую-нибудь проверку здесь надо вставить?
Или, может, j:=j+1 перенести выше к j=0 надо?( скорее всего)...

-------
-Мы - за собак...
-А мы - ЗаПЧЕЛ


Последний раз редактировалось Sox, 29-10-2005 в 22:26.


Отправлено: 22:06, 29-10-2005 | #3


Аватара для Savant

Старожил


Сообщения: 300
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


3) ln(x) = log(x)
4) for( j=0; j<=15) <- красиво написал, если б точку с запятой не забыл был бы еще один бесконечный цикл

Пробуем так:
Код: Выделить весь код
  while (j < 15)
  {
    /* показать - X, " | " */
    printf ("\n%01.2f | ", X);
    /* Operation X = X + D */
    X = X + D;
    /* Operation D = D * C */
    D = D * C;
    /* Operation j = j + 1 */
    j ++;
    if ((X < 0) || (atan(X) * sin(5*X) <= 0))
    {
      printf ("Y undefined");
      continue;
    }
    Y = log(atan(X)*sin(5*X)) + sqrt(3*X*X*X);
    if (Y > YM)
    {
      printf("Y too high , exiting ;-)");
      break;
    }
    printf ("Y = %01.2f", Y);
  }
  getch();
ну т.е. все, что ниже while(...) заменяем на это

Отправлено: 22:27, 29-10-2005 | #4

Sox Sox вне форума Автор темы

Аватара для Sox

Пользователь


Сообщения: 54
Благодарности: 1

Профиль | Отправить PM | Цитировать


Щас попробуем... на вид смотрится более солидно, чем у меня в начале было... :-)

-------
-Мы - за собак...
-А мы - ЗаПЧЕЛ


Отправлено: 22:32, 29-10-2005 | #5

Sox Sox вне форума Автор темы

Аватара для Sox

Пользователь


Сообщения: 54
Благодарности: 1

Профиль | Отправить PM | Цитировать


хм... то есть только с простыми логарифмами? А с натуральными?
%01.2f - как-то помню, нам про такое рассказывали несклько недель назад, только я пива тогда много выпил, не помню что это значит... вроде f - число с плавающей точкой, 1- число цифр в целой части, .2 - в дробной...
и что такое getch()? А в принципе БОЛЬШОЕ СПАСИБО! :-)

-------
-Мы - за собак...
-А мы - ЗаПЧЕЛ


Отправлено: 22:49, 29-10-2005 | #6


Аватара для Savant

Старожил


Сообщения: 300
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


Функции ln() в С нет, а роль натурального логарифма исполняет функция log(). А например log10() считает десятичный логарифм. Функция getch() (кстати она из conio.h , забыл сказать) прерывает выполнение программы, пока пользователь не нажмет какую-нибудь клавишу (удобно для просмотра результатов работы).

Отправлено: 22:55, 29-10-2005 | #7

Sox Sox вне форума Автор темы

Аватара для Sox

Пользователь


Сообщения: 54
Благодарности: 1

Профиль | Отправить PM | Цитировать


хм... а можно написать это так:
Код: Выделить весь код
if (atan(X) * sin(5*X) <= 0)
{
  printf ("Y undefined");
  continue;
}
 
if (atan(X)<=0)
{
  printf ("Y=undefined");
  continue;
}
 
if (sin(5*X)<=0)
{
  printf ("Y=undefined");
  continue;
}
 
if (X<=0);
{ 
  printf("Y=undefined");
  continue;
}
То есть разбить проверку на несколько этапов?
Как бы вроде смысл от этого не меняется, вроде...

-------
-Мы - за собак...
-А мы - ЗаПЧЕЛ


Последний раз редактировалось Savant, 30-10-2005 в 12:32.


Отправлено: 00:08, 30-10-2005 | #8


Аватара для Savant

Старожил


Сообщения: 300
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


Цитата:
Как бы вроде смысл от этого не меняется, вроде...
Да как сказать... Зачем нужны второе и третье условия? Ведь для D(y) важно , чтоб произведение в логарифме было строго положительное число , а под корнем неотрицательное. А условие 4 у Вас, кстати, захватывает нолик (конечно, ежу понятно, что sin(5*0)=0 и функция y(x) все равно не определена, но лучше делать все по правилам). Далее смотрим на код и видим, что для обоих условий требуется выполнить один и тот же кусок код, значит, логичней было бы определить условия внутри только одного if-a.

Отправлено: 12:31, 30-10-2005 | #9

Sox Sox вне форума Автор темы

Аватара для Sox

Пользователь


Сообщения: 54
Благодарности: 1

Профиль | Отправить PM | Цитировать


Ясно, спасибо...
только вот еще один вопрос возник:
Цитата:
printf ("\n%01.2f | ", X);
"\n%01.2f | "- используется, как я понял, для вывода Y| ? Или просто для вывода "|"?

-------
-Мы - за собак...
-А мы - ЗаПЧЕЛ


Последний раз редактировалось Sox, 30-10-2005 в 14:11.


Отправлено: 12:54, 30-10-2005 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/С++ | Прошу помочь в написании кода...

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Прошу помочь evm180 Лечение систем от вредоносных программ 23 24-02-2009 08:35
Очень прошу помочь... aviss Выбор отдельных компонентов компьютера и конфигурации в целом 6 09-08-2008 23:26
Интерфейс - Прошу помочь со стайлбулдером ! Tanr Хочу все знать 1 25-04-2008 19:36
Прошу помочь в выборе конфигурации) r0mk Выбор отдельных компонентов компьютера и конфигурации в целом 35 04-07-2006 17:29
DRVSPACE. Очень прошу помочь! dima123 Microsoft Windows 95/98/Me (архив) 3 27-02-2005 16:35




 
Переход