Составить программу, осуществляющую замену в двоичном файле двумерных массивов - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Очень срочно, не оставайтесь равнодушными пожалуйста. Часть кода взято из этой темы. Комментарием помечено место где появляется ошибка. Дан двоичный файл, содержащий расположенные по строкам M двумерных вещественных массивов, каждый размером L X K ( L строк, K строк ). Каждый элемент массива помещен в отдельную запись. Составить программу, формирующую этот файл (например, 3 массива размером 2 на 3). Составить программу, осуществляющую замену в двоичном файле двумерных массивов в указанном с клавиатуры интервале номеров на двумерные массивы, содержащиеся в других, литерных файлах, имена которых вводятся с клавиатуры по запросу программы.
#include "stdafx.h"
#include <iostream>
#include "locale.h"
#include <string>
 
int fseek(FILE *stream, long int offset, int origin);
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"RUS");
    
    //Часть 1
 
    //Создаем файл
    FILE *text;
    text=fopen("laba.bin","wb");
    int m,l,k,g,p;
    cout<<"Введите количество вещественных двумерных массивов\n";
    cin>>m;
    cout<<"Введите число строк в массивах\n";
    cin>>l;
    cout<<"Введите число столбцов в массивах\n";
    cin>>k;
    float x[10][10][10], z[10][10][10];
    
    //Вводим в файл
    for (int i=0;i<m;i++)
    {
    for (int a=0;a<l;a++)
    {
    cout<<("Введите элементы для:\n");
    cout << a+1<<" Строки " << i+1 <<cout << " массива\n";
    for(int b=0;b<k;b++)
    {
    cin>>x[i][a][b];
    fwrite( &x[i][a][b], sizeof(float),1,text);
    }
    }
    }
 
    fclose(text); 
    
    system("pause");
 
    //Часть 2
 
    string file;
    cout << "Введите номер массива для замены: ";
    cin>>m;
    cout << ("Введите имя файла, из которого нужно взять данные для замены: ");
    cin >> file;
    FILE* c;
    text=fopen("laba.bin", "rb+");
    fseek(text,(m-1)*4*k*l,0);
 
    c=fopen("laba_z.dat ", "r");

    for(int i=0;i<(l*k);i++)
{
        
        float f;
        fscanf(c, "%f", &f);                // В этом месте появляется ошибка
        fwrite(&f, sizeof(f), 1, text);

}

fclose(c);
fclose(text);

   /*Вывод на экран для проверки*/
text=fopen("laba.bin","rb");
for (int i=0;i<l;i++)
{ 
    for(int j=0;j<k;j++)
    {   float s;
        fread(&s, sizeof(float), 1, text);
        printf("%f ",s);
    }
}
        
fclose(text);

system("PAUSE");
 
    return 0;
 
}

Решение задачи: «Составить программу, осуществляющую замену в двоичном файле двумерных массивов»

textual
Листинг программы
if(!(c=fopen("laba_z.dat ", "r"))
    printf (" file open error");

Объяснение кода листинга программы

  1. Откроется файл laba_z.dat для чтения или произойдет ошибка открытия файла;
  2. Если файл успешно открыт, то произойдет переход к следующей итерации;
  3. В противном случае, будет выведено сообщение file open error.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.2 из 5
Похожие ответы