Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Вывод в файл


Автор: Garcian 11.12.2008, 21:35
Код

#include <iostream.h>
#include <iomanip.h>
#include <math.h>
#include <fstream.h>
float MyFile (float &, float &, float &, ofstream &);
float Input (float &, float &);
float Summa (float &, float &, float &, float &);

int main(int argc, char *argv[]){
    cout << "Bonjour! " << endl;
    float x, eps, S, a, pogr, q, i;
    ofstream R;
    R.open ("C:\\Lab4.txt", ios::out);
    R << " i | a | S \n";
    Input (x, eps);
    S = 0; a = x; i = 0;
    while (fabs(a) > eps) {
          Summa (x, a, S, i);
          MyFile (i, a, S, R);
          }
    q = log((x + sqrt(1 + x * x)) / sqrt (1 + x * x));
    pogr = q - S;
    R << " Dlya " << q << " pogreshnost ravna: " << pogr << endl;
    R.close();
}
    
  float MyFile(float &i, float &a, float &S, ofstream &R) {
       R << '|' <<setw(5) << i << '|' << setw(15) << setprecision(7)
                          << a << '|' << setw(15) << setprecision(7) 
                          << S << "\n"; 
}

  float Input (float &x, float &eps) {
       do {cout << " Vvedite eps: " << endl; cin >> eps;}
       while ((eps >= 1)&&(eps < 0));
       
       do {cout << " Vvedite argument: " << endl; cin >> x;}
       while (fabs(x) > 1);
}
  
  float Summa (float &x, float &a, float &S, float &i) {
       a = (a*((-4)*x*x*(i+1)*(i+1)))/ ((2 * i + 2.0) * (2 * i + 3.0));
       S = S + a;
       i++;
}


Начнем собственно с того, что у меня файл вообще создаваться не хочет (путь указан правильно). Ладно, запустил у друга - все работает. Но при повторном запуске (через день) выходной файл стал давать не то что нужно (мистика!). 
В общем... в столбце i (в файле) должны быть значения от 0 до N (почему то выводятся только нули); и еще не понятно, что творится с погрешностью.

Елы палы, пока писал, друг ввел с домашнего компа... все работает! ... тогда остается только вопрос: как сделать возможным создание текстового (выходного) файла на своем компе? Пользуюсь DevC++.

Автор: Dmi3ev 11.12.2008, 21:48
Цитата

float MyFile(float &i, float &a, float &S, ofstream &R)

принимай так:
float MyFile(float i, float a, float S, ofstream R) и так во всех функциях.

Добавлено @ 21:55
Цитата

  float Summa (float &x, float &a, float &S, float &i) {
       a = (a*((-4)*x*x*(i+1)*(i+1)))/ ((2 * i + 2.0) * (2 * i + 3.0));
       S = S + a;
       i++;

ты вызываешь ее так
Цитата

Summa (x, a, S, i);

думаешь в main S изменится? нет))) изменится S в функции, а главной нет, конечно))) не могло это работать)))

Добавлено @ 21:56
тоже самое и с остальными переменными а тоже тут не поменяется

Добавлено @ 21:56
вернее тут поменяется а в main нет))) это же локальные переменные

Добавлено @ 21:58
надо делать что-то типа
Код


  float Summa (float &x, float &a, float &S, float &i) {
       a = (a*((-4)*x*x*(i+1)*(i+1)))/ ((2 * i + 2.0) * (2 * i + 3.0));
       S = S + a;
       i++;
      return S;}

а в main писать
Код

S=Summa (x,  a,  i);


Добавлено через 12 минут и 14 секунд
Цитата

  float Input (float &x, float &eps) {
       do {cout << " Vvedite eps: " << endl; cin >> eps;}
       while ((eps >= 1)&&(eps < 0));
       
       do {cout << " Vvedite argument: " << endl; cin >> x;}
       while (fabs(x) > 1)

это тоже ничего не возвращает, вообщем, вводи не вводи, в main х будет равен 0

Добавлено через 13 минут и 29 секунд
или как вариант объявление
Код

    float x, eps, S, a, pogr, q, i;
    ofstream R;

делать прям над main, тогда ничего передавать не надо будет даже

Автор: Garcian 12.12.2008, 12:15
 smile все заработало) стоило указать путь с://devcpp//
остался один вопрос, как сделать чтобы i начиналось с нуля, а не с 1?

Автор: Dmi3ev 12.12.2008, 19:57
уха-ха, тупанул. Предложил принимать значения по-другому и от этого отталкивался потом, раздавая советы... Все ок, мой косяк... 

Автор: Garcian 14.12.2008, 15:08
ниче, бывает... Так есть идеи касательно нолика?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)