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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2015, 18:34   #1
АнастасияМММ
 
Регистрация: 01.04.2015
Сообщений: 5
По умолчанию

Пожалуйста, помогите с программой... в голову совсем ничего не приходит

Файл f1 содержит:
• Размерность матрицы N;
• Элементы квадратной матрицы А, записанные по строкам.
Получить матрицу C=А*E, где E ¬– единичная матрица порядка N.
Полученную матрицу С записать в файл по строкам.
___________________________________ ________________________
• Программа должна запрашивать имена файлов у пользователя.
• Программа должна проверять данные в файле на наличие ошибок:
• Неправильная запись чисел
• Неверное число элементов в файле (EndOfFile)
• Ошибка записи

• Программа должна проверять ошибки: открытия файлов, записи и т.п.
• Числа и строки файла разделены пробелами, знаками табуляции и символами «новая строка».
• Программисту заранее не известны размеры последовательностей и матриц, хранящихся в файлах, поэтому если используются массивы, то они должны быть динамическими.
Код:
#include <iostream.h>
#include <conio.h>
#include "stdio.h"
#include <fstream.h>
#include <algorithm>
#include <ctime>
#pragma hdrstop
#pragma argsused
using namespace std;

int main(int argc, char* argv[])
{
   l1:
   //Vvod Matrix A
   int M, N;
   char s[40];
   cout<<"Vvedite imya faila sodergashego matricy A: \n";
   cin>>s;
   ifstream ifs(s);
   ifs >> M >> N;
   int ** a = new int * [M];
   //Vivod matrici A
   cout << "Matrix A:\n";
   for (int r = 0; r < M; r++, cout << endl)
      {
         a[r] = new int [N];
         for (int c = 0; c < N; c++)
            {
               ifs >> a[r][c];
               cout << a[r][c] << " ";
            }
      }
   cout << endl;

   //Vvod Matrix B
    int n = 0;
    cout<<"Vvedite razmernost' edinichnoi matrici B: \n";
    cin >> n; // Ñ÷
    int **a1 = new int* [n];
    for (int r1 = 0; r1 < n; r1++)
    {
        a1[r1] = new int [n]; 
    }
    for (int r1 = 0; r1 < n; r1++)
    {
        for (int c1 = 0; c1 < n; c1++)
        {
            a[r1][c1] = 1; 
            cout << a[r1][c1] << " ";
        }
        cout << endl;
    }

   if (N==n)
     {
        //Vvod Matrix C
        int i,j;
        int **c = new int *[N];
        for ( i = 0; i < N; i++)
           c[i] = new int [n];
        //Ymnozhenie  Matriñ
        for(i = 0; i < N; i++)
           for( j = 0; j < n; j++)
              {
                 c[i][j] = 0;
                 for(int k = 0; k < n; k++)
                 c[i][j] += (a[i][k] * a1[k][j]);
              }
        //Vivod Matrix C
        cout << "Matrix C: " << endl;
        for(i = 0; i < M; i++)
           {
              for (j = 0; j < n; j++)
                 cout << c[i][j] << " ";
                 cout << endl;
           }
        char t[40];
        cout<<"Vvedite imya faila sodergashego matricy C: \n";
        cin>>t;
        ofstream k(t);
        k << M << " " << n << endl;
        for(i = 0; i < M; i++)
           {
              for (j = 0; j < n; j++)
                k << c[i][j] << " ";
                k << endl;
           }
        k.close();
        for (int i = 0; i < M; i++) delete[] c[i];
        delete[] c;
   }
   else cout<<"The number of columns of the matrix A is not equal to the number of rows of the matrix B\n";
   ifs.close();
   for (int r1 = 0; r1 < n; r1++) delete[] a1[r1];
   delete[] a1;
   for (int r = 0; r < M; r++) delete[] a[r];
   delete[] a;
   {
        //Menu
        int g;
        cout<<"\n1-Repeat\n0-Exit\n";
        cin>>g;
        if (g!=0 && g!=1) {cout<<"\nVvedeno nevernoe znachenie. Programma avtomaticheski zakrivaetsya.\n"; getch();}
        else
            {
             if (g==1) {goto l1;}
             else {goto l2;};
            }
        l2:
        exit(0);
     }
   getch();
}
Программа работает, на как-то не правильно. Подскажите, пожалуйста, в чем ошибка?

Последний раз редактировалось Stilet; 08.05.2015 в 18:03.
АнастасияМММ вне форума Ответить с цитированием
Старый 08.05.2015, 18:04   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А что значит "как-то не правильно"? Как именно не правильно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файловый ввод - вывод pyrozhok Общие вопросы C/C++ 0 11.05.2014 14:03
Файловый ввод/вывод MishkaSh Помощь студентам 8 29.09.2013 13:04
Файловый ввод-вывод. three_cats Общие вопросы C/C++ 4 01.10.2012 09:39
Файловый ввод-вывод andrey-v-isaev Общие вопросы C/C++ 1 02.05.2010 19:54
файловый ввод/вывод kot111 Общие вопросы C/C++ 1 04.02.2008 17:45