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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2009, 19:53   #1
Девушка_Мария
Новичок
Джуниор
 
Регистрация: 07.12.2009
Сообщений: 1
Восклицание Проблема с работой программ

1.
Код:
#include<stdio.h>
#include<math.h>
#include<conio.h>
double main(void)
{
float Q,x;
printf("vvedite x");
scanf("%f",&x);
if (sin(x)+cos(x)>0)
if (log(x*x+exp(-x))<0) printf ("\nX ne prinadlezit oblasti dopystimyx znachenij fynkcii. Vvedite novoe znachenie X:");
scanf ("%f", &x);
if (sin(x)+cos(x)<0)
if (log(x*x+exp(-x))>0) printf ("\nX ne prinadlezit oblasti dopystimyx znachenij fynkcii. Vvedite novoe znachenie X:");
scanf ("%f", &x);
Q=sqrt((sin(x)+cos(x))/log(x*x+exp(-x))); \\заданная функция
printf("Q=%f\n",Q);
getch();
return(0);
}
не могу разобраться, как правильно написать область определения этой функции.

2.также возник вопрос: что такое рекуррентные зависимости и как вычислять бесконечную суммус заданной точностью используя эти зависимости.

3.
Код:
#include <stdio.h>
#include <conio.h>

void main (char, Str[])
{
int i, j;
char temp;
printf ("Vvedite natyralnoe chislo:\n");
scanf ("%s",&Str);
while (Str[i]!='\0')
	{
	i++;
	--i;
	}
while (j<i)
	{
	temp=Str[j];
	Str[j]=Str[i];
	Str[i]=temp;
	--i;
	++j;
	}
printf ("\nPolychilos chislo: %s", Str[]);
}
не работает по неизвестным мне причинам.
задание звучало так: поменять местами цыфры старшего и младшего разрядов данного натурального числа (т.е. из числа 2468 должно получиться 8642)

сам код рассказал препод на лекции.
Девушка_Мария вне форума Ответить с цитированием
Старый 08.12.2009, 12:17   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Цитата:
не могу разобраться, как правильно написать область определения этой функции.
Область определения -это те значения аргументов, которые допустимы для данной функции. По большому счету у Вас только х не должно быть равно 0, т.к. 0 нельзя умножить на 0.
Выражение под логарифмом x*x+exp(-x), в общем случае всегда д.б больше 0, но т.к у Вас x*x , то для всех действительных х величина положительная, exp(-x)=1/exp(x), тоже положительное, следовательно вся сумма положительная.
Корень((sin(x)+cos(x))- в общем случае под корнем может быть как отрицательное, так и положительное число. Если ищем в области действительных чисел, то (sin(x)+cos(x) д. б. >0, следовательно условием ввода д.б.
Код:
while (x==0 ||(sin(x)+cos(x))<0 )
{
printf ("\nX ne prinadlezit oblasti dopystimyx znachenij fynkcii.");
printf ("\n Vvedite novoe znachenie X:");
scanf ("%f", &x);
}
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 08.12.2009, 17:58   #3
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Sweta, а почему это 0 нельзя умножить на 0? Во-всяком случае в определении поля никаких ограничений нет

2. Рекуррентная зависимость - это такая зависимость между некоторыми величинами, при которой каждая следующая (по крайней мере начиная с некоторого номера) величина выражается через предыдущие. Простейший пример - последовательность Фибоначчи.
По поводу как считать суммы, сначала поищите на форуме по словам "ряд Тейлора" и "сумма с заданной точностью", если не подойдёт, спросите конкретно.

3. Если препод Вам такой код рассказал, то его (препода) без зазрений совести можно сдать в утиль. Хотя мне кажется, что скорее Вы неправильно переписали
Вот исправленный вариант
Код:
#include <stdio.h>
#include <conio.h>

void main ()
{
char Str[256];
int i = 0, j = 0;
char temp;
printf ("Vvedite natyralnoe chislo:\n");
scanf("%s", Str);
while (Str[i]!='\0')
	{
	i++;
	if (i > 255) { printf("\nToo long number\n"); return ; }
	}
--i;
while (j<i)
	{
	temp=Str[j];
	Str[j]=Str[i];
	Str[i]=temp;
	--i;
	++j;
	}
printf ("\nPolychilos chislo: %s", Str);
}
Ошибки были такие: неправильный заголовок функции; --i должно выполняться один раз, а у Вас оно крутилось в цикле, и всё банально зацикливалось; не было проверки на выход за границы массива
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с работой с файлами (Паскаль) ReaktiV Помощь студентам 27 09.11.2008 10:30