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

Программа не выполняет запись в файл

04.06.2015, 12:25. Показов 1392. Ответов 6
Метки нет (Все метки)

Программа никак не хочет записывать матрицу и результаты подсчета в два файла. Подскажите, пожалуйста, где мой косяк!
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <locale.h>
#include <iomanip>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"rus");
 
    int i, j, sw, sw1,vt , per, tret, c1=1,sum;
        float M[6][3];
    printf("\n\nМЕНЮ:\n1) Ввести массив с клавиатуры\n2) Чтение массива из файла\n\n");
 
    while(c1)
    {
 
 
        cout<<"\nВведите команду:";
        cin>>sw1;
 
        switch(sw1)
        {
            case 1:
            {
                cout<<"\nВведите элементы массива: \n";
                for(i = 0; i < 6; i++)
                {
                    for(j = 0; j < 3; j++)
                    { cout<<" Элемент массива["<<i<<"]["<<j<<"]=";
 
                        cin >> M[i][j];
                    }
                }
                 cout<<"\n Получен следующий массив в виде мпатрицы:\n\n ";
                for(i = 0; i < 6; i++)
                {
                    for(j = 0; j < 3; j++)
                    {
                       cout<< std::setw(5)<< M[i][j] <<"\t ";
                    }
                    cout << endl;
                }
                c1=0;
 
 
            }
            break;
 
 
 
            case 2:
            {
                std::ifstream FILE("1.txt");
 
                for (i = 0; i <6; i++)
                {
                    for(j = 0; j < 3; j++)
                    {
                        FILE >> M[i][j];
                    }
                }
 
                cout<<"\n Из файла загружен следующий массив в виде матрицы: \n\n";
                for(i = 0; i < 6; i++)
                {
                    for(j = 0; j < 3; j++)
                    {
                        cout<< std::setw(5)<<M[i][j] << "  ";
 
                    }
                    cout << endl;
                }
                c1=0;
            }
            break;
 
default:printf("\nОшибка: введен неправильный символ.\n\n");
 
        }
    }
 
    printf("\n\n\nМЕНЮ:\n1) Подсчет суммы элементов первого столбца\n2) Подсчет суммы элементов второго столбца\n3) Подсчет суммы элементов третьего столбца\n4) Запись даннных в файл\n5) Выход из программы\n");
 
    while(1)
    {
        cout<<"\n\n\nВведите команду: ";
        cin>>sw;
 
        switch(sw)
        {
            case 1:
            {    printf("\n\n\nМЕНЮ:\n1) Подсчет суммы элементов первого столбца\n2) Подсчет суммы элементов второго столбца\n3) Подсчет суммы элементов третьего столбца\n4) Запись даннных в файл\n5) Выход из программы\n");
 
  per=0;
     for( int i=0;i<3;i++)
    {
        for( int j=sum=0; j<6; j++)
           sum += M[j][i=0]; // здесь поправлено
   per++;
        cout << endl;
        cout << "Cумма элиментов перого столбца =" << sum << endl;  break;
 
 
    }  break;
 
        {
 
            case 2:
                       {    printf("\n\n\nМЕНЮ:\n1) Подсчет суммы элементов первого столбца\n2) Подсчет суммы элементов второго столбца\n3) Подсчет суммы элементов третьего столбца\n4) Запись даннных в файл\n5) Выход из программы\n");
 
    vt=0;
     for( int i=0;i<3;i++)
    {
        for( int j=sum=0; j<6; j++)
           sum += M[j][i=1]; // здесь поправлено
     vt++;
        cout << endl;
        cout << "Cумма элемнтов второго столбца =" << sum << endl;  break;
 
 
    }
break;
 
            {case 3:
                        {    printf("\n\n\nМЕНЮ:\n1) Подсчет суммы элементов первого столбца\n2) Подсчет суммы элементов второго столбца\n3) Подсчет суммы элементов третьего столбца\n4) Запись даннных в файл\n5) Выход из программы\n");
 
     tret=0;
     for( int i=0;i<3;i++)
    {
        for( int j=sum=0; j<6; j++)
           sum += M[j][i=2]; // здесь поправлено
       tret++;
        cout << endl;
        cout << "Cумма сумма элементов третьего столбца =" << sum << endl;  break;
 
 
    }
break;
 
            {case 4:
            {  printf("\n\n\nМЕНЮ:\n1) Подсчет суммы элементов первого столбца\n2) Подсчет суммы элементов второго столбца\n3) Подсчет суммы элементов третьего столбца\n4) Запись даннных в файл\n5) Выход из программы\n");
                {per=0;
                    for (i=0 ; i<3; i++)
                    for (  j=sum=0 ;j<6 ;j++)
 
                        sum += M[j][i=0];
                            per++;
 
                vt=0;
                    for (i=0 ; i<3; i++)
                for (  j=sum=0 ;j<6 ;j++)
 
                         sum += M[j][i=1];
                            vt++;
 
                 tret=0;
                    for (i=0 ; i<3; i++)
                    for ( j=sum=0 ;j<6 ;j++)
 
                        sum += M[j][i=2];
                            tret++;}
 
                FILE *f1, *f2;
                f1=fopen("massiv2.txt", "w");
                f2=fopen("sum.txt", "w");
 
                for (int l=0; l<6; l++)
                {
                    for (int k=0; k<3; k++)
                    {
                        fprintf(f1,"  %10.5f\t", M[l][k]);
                    }
                    fprintf(f1, "\r\n");
                }
                fprintf(f2,"\n %d - сумма первого столбца\n ", per);
                fprintf(f2,"\n %d - сумма второго столбца\n " , vt );
                fprintf(f2,"\n %d - сумма третьего столбца " , tret );
                fclose(f1);
                fclose(f2);
                cout<<"\n\n Произведена запись в файл.";
 
            }
break;
            {case 5:
                        {return 0;}
break;
            default:printf("\nОшибка: Введен неправильный символ.\n\n");
 
 
}}}    }  }}}}}return 0;  }
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2015, 12:25
Ответы с готовыми решениями:

Программа посчета нулей в числах и запись их в файл
Доброго времени суток. Предупреждение - мой уровень ассемблера примерно равен 0. Особенностей...

Программа чтение из файла и запись в файл си или с++
Приветствую всех программистов! Есть файл такого формата : # # The contents of this file are...

Программа не сохраняет запись в файл и не читает его
Не как не могу понять что не так в коде, не как не хочет сохранять в файл и читать с его. Program...

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

6
67 / 67 / 72
Регистрация: 10.04.2015
Сообщений: 281
04.06.2015, 12:57 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
FILE *f1, *f2;
    f1=fopen("massiv2.txt", "w");
    for (int l=0; l<6; l++)
    {
        for (int k=0; k<3; k++)
        {
            fprintf(f1," %10.5f\t", M[l][k]);
        }
        fprintf(f1, "\r\n");
    }
    fclose(f1);
    f2=fopen("sum.txt", "w");
    fprintf(f2,"\n %d - сумма первого столбца\n ", per);
    fprintf(f2,"\n %d - сумма второго столбца\n " , vt );
    fprintf(f2,"\n %d - сумма третьего столбца " , tret );  
    fclose(f2);
    cout<<"\n\n Произведена запись в файл.";
Тут все должно работать. Косяки в другом месте.
И...
C++
1
}} } }}}}}return 0; }
это потрясно
0
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 14
04.06.2015, 13:03  [ТС] 3
не получилось, к сожалению
0
31 / 35 / 11
Регистрация: 14.07.2013
Сообщений: 146
04.06.2015, 13:10 4
Дмитрий Рачеев, а почему бы Вам не использовать поток для записи в файл?

C++
1
2
3
4
5
6
7
8
9
#include <fstream>
 
...
 
ofstream out("filename");
out << "Some text";
out.close();
 
...
0
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 14
04.06.2015, 13:36  [ТС] 5
dima55501, а можно в коде написать. а то я новичок боюсь не так понять, не то сделать...
а библиотека такая уже подгружена

Добавлено через 1 минуту
но проблема скорее всего в в 4 кейсе т.к. я вставлял код подруги и всё работало

Добавлено через 2 минуты
имею в виду, что проблема в коде до FILE...
0
67 / 67 / 72
Регистрация: 10.04.2015
Сообщений: 281
04.06.2015, 14:21 6
Лучший ответ Сообщение было отмечено Дмитрий Рачеев как решение

Решение

Цитата Сообщение от Дмитрий Рачеев Посмотреть сообщение
но проблема скорее всего в в 4 кейсе т.к. я вставлял код подруги и всё работало
Решил отдебажить код в студии, и понял в чем проблема... В этом ужасе.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
for (  j=sum=0 ;j<6 ;j++)
 
                        sum += M[j][i=0];
                            per++;
 
                vt=0;
                    for (i=0 ; i<3; i++)
                for (  j=sum=0 ;j<6 ;j++)
 
                         sum += M[j][i=1];
                            vt++;
 
                 tret=0;
                    for (i=0 ; i<3; i++)
                    for ( j=sum=0 ;j<6 ;j++)
 
                        sum += M[j][i=2];
                            tret++;}
Замените у себя case 4 на это...

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
printf("\n\nМЕНЮ:\n \
                1) Подсчет суммы элементов первого столбца \n \
                2) Подсчет суммы элементов второго столбца \n \
                3) Подсчет суммы элементов третьего столбца \n \
                4) Запись даннных в файл\n \
                5) Выход из программы\n");
 
                per=0;  
                vt=0;
                tret = 0;
 
                for (j=0 ;j<6 ;j++)
                {
                    per += M[j][0];
                    vt +=  M[j][1];
                    tret += M[j][2];
                }
 
                FILE *f1, *f2;
                f1=fopen("massiv2.txt", "w");
                f2=fopen("sum.txt", "w");
 
                for (int l=0; l<6; l++)
                {
                    for (int k=0; k<3; k++)
                    {
                        fprintf(f1,"  %10.5f\t", M[l][k]);
                    }
                    fprintf(f1, "\r\n");
                }
                
                fprintf(f2,"\n %d - сумма первого столбца\n ", per);
                fprintf(f2,"\n %d - сумма второго столбца\n " , vt );
                fprintf(f2,"\n %d - сумма третьего столбца " , tret );
                fclose(f1);
                fclose(f2);
                cout<<"\n\n Произведена запись в файл.";
 
            }
break;
1
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 14
05.06.2015, 08:59  [ТС] 7
Спасибо, mr mczakenberg, а то я пока не до конца разбираюсь в алгаритмах. только месяц изучаю что это такое есть) Так что еще раз большущее спасибо)
А вот можно ещё буквально пару вопросов?
1) Я прописал defoult, но на ввод символа, а не цифры, он выводит сообщение об неправильном вводе бесконечно. можно ли это поправить?
2) Есть ли оператор для того, чтобы я мог вернуться к первому меню? нашел goto но я так понял, что он прирывает интеракции, и его применение крайне не желательно(да и не получилось у меня=( ).
Спасибо. И извините, если вопросы глупые.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2015, 08:59
Помогаю со студенческими работами здесь

Сведения о книгах: Программа прекращает работу и не происходит запись в файл
Программа должна записывать данные о книгах в список, записать его в файл, а потом снова считать...

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

Что выполняет программа
Program A; Var N,S:integer; Begin readln(N); S:=0; While N&lt;&gt;0 do Begin S:=N mod 10+S; N:=N div...

Что выполняет программа?
Что делает эта программа? #define K 50 int y, n, m; /* ввод y */ n=0; m=y; for(j=0; j&lt;K;...

Программа не выполняет условие
Здравствуйте. Возникла проблема с кодом на Jave. Не могу самостоятельно обнаружить ошибку. ...

Программа не выполняет команды
писал прогу что бы приколоться над другом но она не хочет выполнять команды ПОМОГИТЕ !где ошибка? ...


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

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

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