0 / 0 / 0
Регистрация: 02.12.2019
Сообщений: 18
1

Функция вывода в файл

11.05.2020, 18:29. Показов 895. Ответов 3

Господа,помогите пожалуйста разобраться,почему не работает функция вывода,заранее извиняюсь если ошибка будет максимально глупой.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
struct T1 :public T
{
    T1() { x = new int[100]; memset(x, 0, sizeof(int)*100);}
    T1(const T1 &b) { printf("T1(T1)\n"); x = new int[100]; CopyOnly(b); }
    virtual int Output(const char *f) {
        int i;
        std::ofstream out;
        out.open(("f"), ios::out);
   
 
        if (out.is_open())
        {
            out << "ok" << std::endl;
        }
 
        std::cout << "End of program" << std::endl;
        return 0;     
        for (int i = 0; i < 100; i++)
        {
            out << x[i] << endl;;
            printf("type T1 : %d...\n", x[i]);
        }
        out.close();
    }
        T &operator=(const T &b) { CopyOnly(b); printf("T1=T\n"); return *this;}
};
Есть виртуальная функция output
вызываю ее в main следующим образом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
int main()
{
char str[40];//Строковая переменная (для пути к файлу)
cout << "\n write here adress fo write-file,for exampe D:\hello.txt: \n";
cin >> str;
T** t; int n = 6;
t = new T*[n];
T1* t1 = new T1; t[0] = t1; *t[0] = 1;
T2* t2 = new T2; t[1] = t2; *t[1] = 2;
*t1 = *(t[0]); 
*t2 = *(t[1]);
*(t[0]) = *t1; 
*(t[1]) = *t2;
t[2] = T:: create(1,1,n);
t[3] = T:: create(2,2,n);
t[4] = T:: create(1,0,n);
t[5] = T:: create(1,0,n);
*t[4] = *t[3];
for (int i = 0; i < n; i++)t[i]->Output (str) ;
*t[5] = *t1 + *t2 + *t[2] + *t[3] + *t[4];
for (int i = 0; i <n; i++)t[i]->Output(str);
for (int i = 0; i <n; i++)delete t[i];
delete[] t; t = NULL;
getchar();
}
Заполняю имя файла в программе,но запись в него не идет,прошу помочь разобраться,спасибо за внимание
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2020, 18:29
Ответы с готовыми решениями:

Функция заполняющая массив и функция вывода массива
Напишите две функции. Первая функция заполняет массив, вторая функция выводит массив на экран

Разработать файл сценария для вывода информации о переменных среды Windows в файл
Всем здрасьте, помогите разобраться с заданием. Есть PowerShell , как я понял это аналог cmd в...

Разработать пакетный файл для вывода информации в файл о переменных среды Windows в таблицу
Добрый день, не могу понять как вывести информацию о переменных окружения Windows в файл , чтобы он...

Разработать командный файл для вывода в файл списка всех вложенных директорий заданного каталога
Здравствуйте,помогите пожалуйста разработать файл для вывода в файл списка всех вложенных...

3
6565 / 4550 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
11.05.2020, 19:01 2
Цитата Сообщение от Shiroyashma Посмотреть сообщение
Господа,помогите пожалуйста разобраться,почему не работает функция вывода,заранее извиняюсь если ошибка будет максимально глупой.
return 0; у тебя специально сделан посреди функции Output?
Покажи весь код
0
0 / 0 / 0
Регистрация: 02.12.2019
Сообщений: 18
11.05.2020, 19:26  [ТС] 3
Я уже убрал лишний кусочек,но проблема от этого не ушла(
Код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <iomanip>
#include <cstring>
#include <ctime>
#include <fstream>
#include <cstdlib>
#include <cstddef>
#include <cmath>
using namespace std;
//Пример базового класса Т и двух порожденных классов Т1 и Т2. Классы сложные.
// присутствует чисто виртуальная функция ОиЕриХ() ‚обычный оператор присваивания,
//позволяющий присваивать порожденные классы базовому, и оператор сложения.
//в базовом классе присутствует статическая функция сгеа{е(), позволяющая создавать
//экземпляр порожденного класса с типом, зависящим от параметра.
//наличие чисто виртуальной функции запрещает прямое создание объектов базового типа.
//в примере использования создается массив указателей на базовый класс.
//с помощью функции Т1::сгеафе() создаются экземпляры классов типа Т1 и Т2,
//детонстрируется работоспособность операторов присваивания, сложения
//и корректность вызова функции Очерие ().
// Разберитесь, в каких случаях какие операторы присваивания работают и почему они работают!
//Разберитесь, почему работает оператор сложения!
struct T
{
int *x;
virtual int Output(const char *f=NULL)=0;
static T *create(int Type,int X,int N);
T &operator=(const T &b) { CopyOnly(b); printf("T=T\n"); return *this; }
T &operator=(const int &b) { printf("T=int\n"); for(int i = 0; i < 100; i++)x[i] = b; return *this; } 
virtual ~T() { printf("~T()\n"); delete[] x; x = NULL; }
void CopyOnly(const T &b) { memcpy(x, b.x, sizeof(int) * 100); }
};
 
 
struct T1 :public T
{
    T1() { x = new int[100]; memset(x, 0, sizeof(int)*100);}
    T1(const T1 &b) { printf("T1(T1)\n"); x = new int[100]; CopyOnly(b); }
    virtual int Output(const char *f) {
        int i;
        std::ofstream out;
        out.open(("f"), ios::out);
   
 
         
        for (int i = 0; i < 1; i++)
        {
            out << x[i] << endl;;
            printf("type T1 : %d...\n", x[i]);
        }
        out.close();
        return *f;
    }
        T &operator=(const T &b) { CopyOnly(b); printf("T1=T\n"); return *this;}
};
struct T2 :public T
{
    T2() { x = new int[100]; memset(x, 0, sizeof(int) * 100); }
    virtual int Output(const char* f) {
        std::ofstream out;
        out.open(("f"));
  
        for (int i = 0; i < 1; i++) {
            out << x[i] << endl;;
            printf("type T2 : %d...\n", x[i]);
        }
        out.close();
        return *f;
    }
    T & operator=(const T & b) { CopyOnly(b); printf("T2=T\n"); return *this; }
};
 
T1 operator+(const T& a, const T& b) { T1 r; for (int i = 1; i < 100; i++)r.x[i] = a.x[i] + b.x[i]; return r;}
T *T::create(int Type,int X,int N)
{T* t;
if (Type ==1)
{
t = new T1; for (int i = 0; i < N; i++)t->x[i] = X; return t;
}
else //if(Туре==2)
{
    t = new T2; for (int i = 0; i < N; i++)t->x[i] = X; return t;
}
}
int main()
{
 char str[40];//Строковая переменная (для пути к файлу)
cout << "\n write here adress fo write-file,for exampe D:\hello.txt: \n";
cin >> str;
T** t; int n = 6;
t = new T*[n];
T1* t1 = new T1; t[0] = t1; *t[0] = 1;
T2* t2 = new T2; t[1] = t2; *t[1] = 2;
*t1 = *(t[0]); 
*t2 = *(t[1]);
*(t[0]) = *t1; 
*(t[1]) = *t2;
t[2] = T:: create(1,1,n);
t[3] = T:: create(2,2,n);
t[4] = T:: create(1,0,n);
t[5] = T:: create(1,0,n);
*t[4] = *t[3];
for (int i = 0; i < n; i++)t[i]->Output (str) ;
*t[5] = *t1 + *t2 + *t[2] + *t[3] + *t[4];
for (int i = 0; i <n; i++)t[i]->Output(str);
for (int i = 0; i <n; i++)delete t[i];
delete[] t; t = NULL;
getchar();
}
Добавлено через 14 минут
случайно не прикрепил код к личному ответу,извиняюсь
0
6565 / 4550 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
11.05.2020, 19:28 4
Лучший ответ Сообщение было отмечено Shiroyashma как решение

Решение

Цитата Сообщение от Shiroyashma Посмотреть сообщение
out.open(("f"), ios::out);
out.open(f, ios::out)

Цитата Сообщение от Shiroyashma Посмотреть сообщение
virtual int Output(const char* f) {
        std::ofstream out;
        out.open(("f"));
out.open(f)
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2020, 19:28
Помогаю со студенческими работами здесь

Функция вывода
И вот еще один такой глупый вопрос возник. Есть функция: jQuery(document).ready(function() { ...

функция вывода
Всем привет! Есть код (правда я еще работаю над ним) #include&lt;iostream.h&gt; #include&lt;conio.h&gt;...

Универсальная функция вывода
Господа, пытаюсь сделать функцию, которая напечатает массив, и будет универсальна для всех типов и...

рекуривная функция вывода
Всем доброго времени суток, мне надо решить вот такую задачку, никак не могу сообразить как это...

Функция ввода / вывода
Программа ругается на переменную C, и не выводит нужно результата, посмотрите в чем ошибка ...

Функция вывода меню
Привет народ. Вот функция вывода меню. При выводе появляется закрывающая кавычка php, как ее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru