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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2011, 10:21   #1
геннадий522
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 20
По умолчанию как сделать проще

помогите как сделать проще?
Код:
double  ost(double x)
{
    while (x > 6.283)
    {
        x=x-6.283;
    }

    return x;
}
геннадий522 вне форума Ответить с цитированием
Старый 18.12.2011, 10:32   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

геннадий522, а куда же проще?
Можно запись упростить:
Код:
x -= 6.283;
А ещё константу, как-то осмысленно попробовать обозвать:

Код:
#define LIMIT 6.283

double  ost(double x)
{
    while (x > LIMIT)
    {
        x -= LIMIT;
    }

    return x;
}
Может вы из контекста вырвали этот код. Давайте всю программу посмотрим.
8Observer8 вне форума Ответить с цитированием
Старый 18.12.2011, 10:36   #3
геннадий522
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 20
По умолчанию

да мне нужно поменять
Код:
#include "StdAfx.h"
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
double  ost(double x)
{
    while (x > 6.283)
    {
        x=x-6.283;
    }

    return x;
}


int main()
{
 double x,a,b,dx,i,f=1,dx1;

cout<<"Vvedite а"<<endl;
 cin>>a;

 cout<<"Vvedite b"<<endl;
 cin>>b;

 dx=(b-a)/1000;
 cout<<"Vvedite shag dx1"<<endl;
 cin>>dx1;

 for(;dx1<=dx;)
 {
 cout<<"Vvedite drugoe znachenie dx1"<<endl;
 cin>>dx1;
 
 }
 for(i=a;i<=b;i=i+dx1)
 {
if (ost(exp(i)) <= 3.1415)
 f=f*((log(cos(pow(2.0,i)+3.14)))/log(5.0));
else (ost(exp(i)) >= 3.1415);
 }
 cout<<"Znachenie proizvedeniya:"<<f;
 system("pause");
	return 0;
}
программа работает но мне нужно узнать как по-другому еще можно ее сделать.

Последний раз редактировалось Stilet; 18.12.2011 в 16:55.
геннадий522 вне форума Ответить с цитированием
Старый 18.12.2011, 11:02   #4
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

геннадий522, для начала код записать по-человечески

и заменить:
Код:
for(;dx1<=dx;)
на while:
Код:
while (dx1<=dx)
Вот так можно оформить:
Код:
//#include "StdAfx.h"
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;

double ost(double x) {
    while (x > 6.283) {
        x = x - 6.283;
    }
    return x;
}

int main() {
    double x, a, b, dx, i, f = 1, dx1;

    cout << "Vvedite а" << endl;
    cin >> a;

    cout << "Vvedite b" << endl;
    cin >> b;

    dx=(b-a)/1000;
    cout << "Vvedite shag dx1" << endl;
    cin >> dx1;

    while (dx1 <= dx) {
        cout << "Vvedite drugoe znachenie dx1"<<endl;
        cin >> dx1;
    }

    for(i = a; i <= b; i = i + dx1) {
        if (ost(exp(i)) <= 3.1415)
            f=f*((log(cos(pow(2.0,i)+3.14)))/log(5.0));
        else (ost(exp(i)) >= 3.1415);
    }

    cout<<"Znachenie proizvedeniya:"<<f;

    system("pause");
    return 0;
}
P.S. А задание какое?
8Observer8 вне форума Ответить с цитированием
Старый 18.12.2011, 11:56   #5
геннадий522
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 20
По умолчанию

Разработать алгоритм вычисления функции из задания в Приложении 1 в(т.е вот для этого f=f*((log(cos(pow(2.0,i)+3.14)))/log(5.0)) )
соответствии с номером бригады. Значения a и b, а так же шага вычисления
вводятся пользователем.
2. Проверить вводимые значения (a, b, шаг) с условием, что должно производиться не
более 1000 итераций вычисления функции. Если условие неверно, повторить
заново ввод значений и проверку.
3. Представить разработанный алгоритм в виде блок-схемы.
4. Произвести вычисление 2-х контрольных примеров для заданной функции.
5. Написать программу на языке С для вычисления функции по разработанному
алгоритму.
6. Произвести проверку работы программы и сравнить результаты с полученными в
п.4.

Содержание отчета:
геннадий522 вне форума Ответить с цитированием
Старый 18.12.2011, 15:07   #6
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
А ещё константу, как-то осмысленно попробовать обозвать:
Для объявления констант есть const, define - плохо
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 18.12.2011, 15:25   #7
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Blade Посмотреть сообщение
Для объявления констант есть const, define - плохо
Аргументируйте.
_Bers вне форума Ответить с цитированием
Старый 18.12.2011, 15:30   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

препроцессор это в принципе плохо.
для const идет проверка типов, а для препроцессора нет(ибо это тупо замена текста)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.12.2011, 15:42   #9
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
препроцессор это в принципе плохо.
для const идет проверка типов, а для препроцессора нет(ибо это тупо замена текста)
1. Какие проблемы могут быть с проверкой типа в ниже представленном коде?

Цитата:
#define KOL 10

void Foo(int val) { if( val==KOL) { std::cout<< "Урра!\n"; } }
int main()
{
Foo(10);
Foo(KOL);
}
2. Если имеет место быть множеству единиц трансляции, каждой из которых требуется работать с едиными глобальными константами,
что тогда? Предлагаете утонуть в extern`нах?

3. Почему препроцессор - это в принципе плохо?
_Bers вне форума Ответить с цитированием
Старый 18.12.2011, 16:57   #10
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Цитата:
Сообщение от Blade Посмотреть сообщение
Для объявления констант есть const, define - плохо
Согласен, спасибо!
8Observer8 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как проще ее написать? 777pro777 Помощь студентам 4 25.10.2011 15:05
Как проще сравнивать даты? silvestr PHP 13 17.04.2011 22:24
может можно сделать проще??? Donatello Общие вопросы C/C++ 6 10.01.2011 19:09
Разворачивающиеся меню. Как проще? Web-Gangsta JavaScript, Ajax 4 05.05.2009 17:46
Можно ли проще сделать задачу на паскале? svobodys Помощь студентам 8 02.12.2008 19:53