![]() |
C/С++ | Прошу помочь в написании кода...
У меня получилось вот такое:
Код:
#include <stdio.h> дается 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 файла не создается, видно, что-то с компилятором, Вроде все описал... |
Sox
То, что сразу видно : 1) убери точки с запятой на концах строк : if (X<=0); и if (atan(X)<=0); 2) функция по-английски function бррр... а как это вообще работает ? j = 0; while (j < 15) { printf ("X,|"); } вечный цикл однако |
1)Убрал, 2)исправил...
Цитата:
вроде как j=0 - это предварительное присваивание значения... может, каккую-нибудь проверку здесь надо вставить? Или, может, j:=j+1 перенести выше к j=0 надо?( скорее всего)... |
3) ln(x) = log(x)
4) for( j=0; j<=15) <- красиво написал, если б точку с запятой не забыл был бы еще один бесконечный цикл Пробуем так: Код:
while (j < 15) |
Щас попробуем... на вид смотрится более солидно, чем у меня в начале было... :-)
|
хм... то есть только с простыми логарифмами? А с натуральными?
%01.2f - как-то помню, нам про такое рассказывали несклько недель назад, только я пива тогда много выпил, не помню что это значит... вроде f - число с плавающей точкой, 1- число цифр в целой части, .2 - в дробной... и что такое getch()? А в принципе БОЛЬШОЕ СПАСИБО! :-) |
Функции ln() в С нет, а роль натурального логарифма исполняет функция log(). А например log10() считает десятичный логарифм. Функция getch() (кстати она из conio.h , забыл сказать) прерывает выполнение программы, пока пользователь не нажмет какую-нибудь клавишу (удобно для просмотра результатов работы).
|
хм... а можно написать это так:
Код:
if (atan(X) * sin(5*X) <= 0) Как бы вроде смысл от этого не меняется, вроде... |
Цитата:
|
Ясно, спасибо... :)
только вот еще один вопрос возник: Цитата:
|
Код:
#include <stdio.h> undefined reference to `atan' code1.c:(.text+0x127): undefined reference to `sin' code1.c:(.text+0x165): undefined reference to `ATAN' code1.c:(.text+0x184): undefined reference to `SIN' code1.c:(.text+0x190): undefined reference to `LOG' code1.c:(.text+0x1b2): undefined reference to `SQRT' collect2: ld returned 1 exit status Вопрос: Почему, если все было задекларировано в math.h? |
Да потому что Вы ЗАГЛАВНЫМИ буквами вызовы функций записали, а язык С чувствителен к регистру символов (в отличие от, например, языка паскаль).
И что Вы все время над кодом извращаетесь? Он у Вас опять нерабочий стал, абсолютно... И неправильный регистр не самая большая беда... |
Неа, не поэтому. Почитайте в начале
Цитата:
И еще : Цитата:
Код, кстати, абсолютно рабочий, компилятор находит только вот эти ошибки. Причем в независимости от регистра, что в большом, что в маленьком... ;) больше ошибок не находит... |
Для прерывания используй return ;
|
ssdm
Спасибо! ;) |
Время: 13:50. |
Время: 13:50.
© OSzone.net 2001-