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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2013, 15:04   #11
alucard115
Пользователь
 
Аватар для alucard115
 
Регистрация: 25.12.2012
Сообщений: 88
По умолчанию

Не совсем все понял. Понял что вначале вы вводите свою функцию, для записи n-кратного синуса. а дальше просто само выражение вводите, и я так понимаю, находиться S.

Код:
#include <iostream.h>
#include <conio.h>
#include <math.h>
void main()
{
//Заголовок функции - тип возвращаемого значения, название, список аргументов
//Пусть наша функция возвращает float, принимает float (значение x) и int (кратность синуса)
float MultiSin(float x, int n){ //Тело функции заключается в операторные скобки {}
  //Объявляем локальную переменную функции
  floar result = x; //Сразу инициализируем - см. выше
  //Теперь, повторяем n раз:
  for(int i=0; i<n; ++i) result = sin(result); //Если цикл состоит из одной инструкции,
  //можно вот так, без скобок

  //Теперь в result у нас значение "n-кратного синуса"
  //Ключевое слово return возвращает это значение вызвавшему
  return result;
}

//Использование (оформление вроде очистки экрана и ввода x опущено)
clrscr();
cout<<"Vvedite x:";
float S = 0;
for(int i=1; i<=n; ++i) //Теперь цикл от 1 до n, потому что начинаем со слагаемого с "однократным" синусом
  S += MultiSin(x, i); //Используется название функции, заданное нами выше
  //Эта инструкция увеличивает S на значение "синуса кратности i" в x
cout <<"S="<<S;
getch();
}
3 ошибки в программе.
alucard115 вне форума Ответить с цитированием
Старый 14.02.2013, 15:12   #12
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Ах, да. В C++ нельзя определять функции внутри других функций (в том числе и внутри main). То есть, программа на C++ выглядит как-то так:
Код:
#include <library>

int function1(int a, char b){
//...
}

void function2(const char* c){
//...
}

//"Особенная" функция main - с её первой инструкции начинается выполнение программы
int main(void){
//...
}
Другими словами: вынесите всю MultiSin вверх, перед началом main().
Abstraction вне форума Ответить с цитированием
Старый 14.02.2013, 15:24   #13
alucard115
Пользователь
 
Аватар для alucard115
 
Регистрация: 25.12.2012
Сообщений: 88
По умолчанию

alucard115 вне форума Ответить с цитированием
Старый 14.02.2013, 15:29   #14
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

См. образец выше ещё раз. Все функции из, положим, библиотеки math можно использовать только после #include <math.h>. "Вверх по тексту" include не работает (если Вы заглянете в справочник, то узнаете, что директива #include попросту вставляет вместо себя текст соответствующего файла).

Ну, и ввод пользователем n и x в main неплохо бы организовать - я их опустил для ясности, но это не значит, что они не нужны.
Abstraction вне форума Ответить с цитированием
Старый 14.02.2013, 16:32   #15
alucard115
Пользователь
 
Аватар для alucard115
 
Регистрация: 25.12.2012
Сообщений: 88
По умолчанию


чето не пойму.. вроде бы задал x и n...
alucard115 вне форума Ответить с цитированием
Старый 14.02.2013, 16:54   #16
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

У каждой функции "свои" переменные. Бывают ещё глобальные (скажем, cin - глобальная переменная), но без веской необходимости ими пользоваться не надо. А в функции main() никаких x и n не объявлено - компилятор понятия не имеет, к чему Вы там обращаетесь. Так что объявите float x; int n; в main().
Abstraction вне форума Ответить с цитированием
Старый 14.02.2013, 17:24   #17
alucard115
Пользователь
 
Аватар для alucard115
 
Регистрация: 25.12.2012
Сообщений: 88
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
У каждой функции "свои" переменные. Бывают ещё глобальные (скажем, cin - глобальная переменная), но без веской необходимости ими пользоваться не надо. А в функции main() никаких x и n не объявлено - компилятор понятия не имеет, к чему Вы там обращаетесь. Так что объявите float x; int n; в main().
аа ясно)) спасибо)

а как будет выглядеть блок-схема данного кода?
Код:

#include <iostream.h>
#include <conio.h>
#include <math.h>

float MultiSin(float x, int n)
{ 
  float result = x; 
  
  for(int i=0; i<n; ++i) result = sin(result);

   return result;
}

void main()
{

clrscr();
float x; int n;
cout<<"Vvedite x:";
cin>>x;
cout<<"Vvedite n:";
cin>>n;
float S = 0;
for(int i=1; i<=n; ++i) 
  S += MultiSin(x, i); 

cout <<"S="<<S;
getch();
}
alucard115 вне форума Ответить с цитированием
Старый 14.02.2013, 17:38   #18
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Ох... не силён Ваш покорный слуга в блок-схемах. Как-то так:
Код:
MultiSin-1: завести место под переменную result, записать туда "значение x"; затем MultiSin-2.
MultiSin-2: завести место под "счётчик", записать туда 0; затем MultiSin-3.
MultiSin-3: ЕСЛИ "счётчик" меньше "числа итераций", ТО MultiSin-4, ИНАЧЕ MultiSin-6.
MultiSin-4: Присвоить result значение sin(result); затем MultiSin-5.
MultiSin-5: Увеличить "счётчик" на 1, затем MultiSin-3.
MultiSin-6: "Результат" равен result.

main-1: Очистить экран; затем main-2.
main-2: Завести переменные x и n, получить от пользователя их значения; затем main-3.
main-3: Завести переменную S, записать туда 0; затем main-4.
main-4: Завести "счётчик", записать туда 1; затем main-5.
main-5: ЕСЛИ "счётчик" меньше либо равен n, ТО main-6, иначе main-9.
main-6: Запомнить эту точку, перейти к MultiSin-1 со "значением x" равным x и "числом итераций" равным "счётчику"; по возвращении - main-7.
main-7: Прибавить к S возвращённый "результат"; затем main-8.
main-8: Увеличить "счётчик" на 1, затем main-5.
main-9: Вывести значение S на экран и подождать, пока пользователь его прочитает; затем main-10.
main-10: КОНЕЦ.
Каждый пункт - в своём блоке (MultiSin-3 и main-5 - блоки ветвления).
Abstraction вне форума Ответить с цитированием
Старый 14.02.2013, 17:52   #19
alucard115
Пользователь
 
Аватар для alucard115
 
Регистрация: 25.12.2012
Сообщений: 88
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Ох... не силён Ваш покорный слуга в блок-схемах. Как-то так:
Код:
MultiSin-1: завести место под переменную result, записать туда "значение x"; затем MultiSin-2.
MultiSin-2: завести место под "счётчик", записать туда 0; затем MultiSin-3.
MultiSin-3: ЕСЛИ "счётчик" меньше "числа итераций", ТО MultiSin-4, ИНАЧЕ MultiSin-6.
MultiSin-4: Присвоить result значение sin(result); затем MultiSin-5.
MultiSin-5: Увеличить "счётчик" на 1, затем MultiSin-3.
MultiSin-6: "Результат" равен result.

main-1: Очистить экран; затем main-2.
main-2: Завести переменные x и n, получить от пользователя их значения; затем main-3.
main-3: Завести переменную S, записать туда 0; затем main-4.
main-4: Завести "счётчик", записать туда 1; затем main-5.
main-5: ЕСЛИ "счётчик" меньше либо равен n, ТО main-6, иначе main-9.
main-6: Запомнить эту точку, перейти к MultiSin-1 со "значением x" равным x и "числом итераций" равным "счётчику"; по возвращении - main-7.
main-7: Прибавить к S возвращённый "результат"; затем main-8.
main-8: Увеличить "счётчик" на 1, затем main-5.
main-9: Вывести значение S на экран и подождать, пока пользователь его прочитает; затем main-10.
main-10: КОНЕЦ.
Каждый пункт - в своём блоке (MultiSin-3 и main-5 - блоки ветвления).
Спасибо большое )) Постарюсь графически это все вывести теперь)



Жаль, что чето не работают у вас Весы... отзыв бы оставил обязательно..

Последний раз редактировалось alucard115; 14.02.2013 в 18:02.
alucard115 вне форума Ответить с цитированием
Старый 16.02.2013, 00:39   #20
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
Хорошо

БС_1.pdf

Код:
#include <iostream>
#include <conio.h>
#include <math.h>

float MultiSin(float x, int n);

using namespace std;

int main()
{
	float	x = 0.0, S = 0.0; 
	int		n = 0;
	int		i;
	
	system("chcp 1251 > nul");

	cout << "\n Введите X: ";	cin >> x;
	cout << " Введите N: ";		cin >> n;

	for(i = 1; i <= n; i++)
		S += MultiSin(x, i); 

	cout << "\n S = " << S;
	getch();
	return 0;
}

float MultiSin(float x, int n)
{
	int	i;
	
	for(i = 0; i < n; i++)
		x = sin(x);
	return x;
}
!!!!!!!!!!!!!!!!!!!!!!!!!!!
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение задачи Raphael Помощь студентам 4 07.10.2010 18:45
Решение задачи Raphael Помощь студентам 2 07.10.2010 09:43
Решение задачи на C# masicev Помощь студентам 1 15.10.2009 15:33
Решение задачи на c++ JOFRIF Помощь студентам 2 21.04.2008 00:35