Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите написать программу 
:(
    Опции темы
GOBLIN_TT
Дата 7.12.2007, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 6.6.2007

Репутация: нет
Всего: 2



Всем привет )

Народ у меня к вам ограмная просьба, помогите написать программу которая решает следующее уравнение:
y=x^10+7/4
X - в 10й степени

В интервале от ( 0 до 80 ) с шагом 5.

Пробовал написать на С, но получилось неправильно.(

Код

#include <stdio.h> 
#include <math.h> 

int main () 
{ 
  FILE *f=fopen("result.txt","wt"); 
  for(int i=0; i <= 80; i++)  fprintf(f,"%d - %e\n",i, exp(10*ln(i))+7/4); 
  fclose(f); 
  printf("Файл записан"); 
  return 0; 
} 


Помогите плиз переписать её на С++, и исправить мою ошибку)))

Заранее Огромное спасибо!)))  smile 
--------------------
PM MAIL WWW ICQ   Вверх
orthrus
Дата 7.12.2007, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

Репутация: нет
Всего: 16



Код

#include <stdio.h> 
#include <math.h> 

int main () 
{ 
  FILE *f=fopen("result.txt","wt"); 
  for(int i=0; i <= 80; i += 5)  fprintf(f,"%d - %e\n",i, (pow(i,10)+7/4)); 
  fclose(f); 
  printf("Файл записан"); 
  return 0; 
} 




--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
Dims
Дата 7.12.2007, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 1
Всего: 11



Цитата(GOBLIN_TT @  7.12.2007,  12:26 Найти цитируемый пост)
Пробовал написать на С, но получилось неправильно.(

Я так понял, уравнение ты попытался решить сам, а программу попросил просто распечатать решение.

По-моему, ты неправильно его решил.

Надо так:

y=x^10+7/4
y-7/4 = x^10
sqrt10(y-7/4) = x

Получается,

Код

x = pow(y-7./4.,0.1)


Точки нужны, чтобы 7./4. не округлилось до целого.



PM MAIL   Вверх
GOBLIN_TT
Дата 7.12.2007, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 6.6.2007

Репутация: нет
Всего: 2



А не поможите сие чудо реализовать на С++ ?))  smile 
--------------------
PM MAIL WWW ICQ   Вверх
orthrus
Дата 7.12.2007, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

Репутация: нет
Всего: 16



вот так:

Код

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

int main () 
{ 
    std::ofstream out("result.txt");//  FILE *f=fopen("result.txt","wt"); 
    for(int i=0; i <= 80; i += 5) out << i << " - " << (pow(i,10)+7/4) << "\n"; //fprintf(f,"%d - %e\n",i, (pow(i,10)+7/4)); 
    out.close();//  fclose(f);
    std::cout << "Файл записан" << std::endl; //  printf("Файл записан");
    return 0; 
} 



--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
GOBLIN_TT
Дата 7.12.2007, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 6.6.2007

Репутация: нет
Всего: 2



Спасибо большое )))

Слушай, а как сделать чобы числа не принимали такой вид ( 1.34627e+018 ) 

Может их попробоватьв Long запихнуть ?)
--------------------
PM MAIL WWW ICQ   Вверх
bsa
Дата 7.12.2007, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(GOBLIN_TT @ 7.12.2007,  13:58)
Слушай, а как сделать чобы числа не принимали такой вид ( 1.34627e+018 ) 

http://www.cplusplus.com/reference/iostrea...tprecision.html
PM   Вверх
GOBLIN_TT
Дата 7.12.2007, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 6.6.2007

Репутация: нет
Всего: 2



Непомогло (
Да и результат неточный получается.

Код

#include <math.h> 
#include <fstream>
#include <iostream>
#include <windows.h>
#include <iomanip>
using namespace std;

int main () 

{ 
    double result[1024];

    std::ofstream out("c:/result3.txt");
    for(int i=0; i <= 80; i += 5)
    {
        result[i] = (pow(i,10)+7./4.);

    //    out << i << " - " << (result) << "\n";
    //out.close();
    }

    for (int r=0; r<80; r+=5)
    {
        std::cout <<setprecision (9) <<result[r] <<std::endl;

        out << result[r] << "\n";
        out.close();
            
    }
    std::cout << "File READ" << std::endl; 




    return 0; 
}

--------------------
PM MAIL WWW ICQ   Вверх
bsa
Дата 7.12.2007, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



извини, а как ты хочешь, чтобы 18-ти значное число у тебя отображалось?
ведь 1.34627e+018 - это одна целая 34 тысячи 627 стотысячных на 10 в 18-й степени.
PM   Вверх
baldina
Дата 7.12.2007, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



1. У тебя вызывается pow(int,int), потому и выдает галиматью - результат в целом не помещается.
Вызывай pow (double(i),10.)

2. А чтоб помогло сделай precision(19)  smile 

3. Очень вольно ты с массивом обращаешься, точнее - с его размером и хранением данных. Тут вообще можно без массива

Код


std::cout << setprecision (19);
out << setprecision (19);

for(int i=0; i <= 80; i += 5)
{
   double r = (pow(double(i),10.)+7./4.);
   std::cout << r << std::endl;
}

out.close();  // <-- !!! Должно быть ВНЕ цикла
            


Ну а если надо в массиве, лучше так:

Код


const size_t n = 80/5;
double result [n];

for (size_t i=0; i < n; ++i)
  result[i] = pow (i*5.0, 10.) + 7./4.;


PM MAIL   Вверх
GOBLIN_TT
Дата 8.12.2007, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 6.6.2007

Репутация: нет
Всего: 2



Всем огромное спасибо!)))  smile 
--------------------
PM MAIL WWW ICQ   Вверх
MAKCim
Дата 8.12.2007, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



GOBLIN_TT, 

M
MAKCim
Модератор: Пометьте тему решенной



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0822 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.