Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Образовательный студенческий форум _ Информатика / Программирование _ Помогите написать программу в С++

Автор: Та-НюШа 14.10.2010, 17:55

Дана матрица F(КхТ), записанная в бинарный файл, состоящая из положительных и отрицательных элементов. Структура файла следущая: сначала хранятся К и Т, а затем матрица F. Сформировать два вектора, включив в первый положительный элемент, а второй - отрицательные. Оба вектора дописать в данный файл. Количество элементов в векторах сосчитать. Перебор элементов матрицы F вести "по строкам".


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

Автор: tig81 14.10.2010, 17:59

http://www.prepody.ru/ipb.html?act=boardrules
Где ваши попытки решения? Выкладывайте свои идеи по решению. Иначе тема будет закрыта.

Автор: julia_lisha 19.10.2010, 8:36

а в чем проблема?

Автор: Harch 19.10.2010, 9:22

Проблема в непонимании алгоритма? Или как?

Автор: Mucho 7.11.2010, 18:21

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

Цитата

//---------------------------------------------------------------------------
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <vcl.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
class MyMatrix
{
int kolstk;
int kolstv;
int iclmatrix[][100];
};
int main()
{
cout << "Enter name of file\n";
char fname[90];
cin >> fname;
FILE *in;
if ((in=fopen(fname, "r+"))==0)
{
cout << "Error read file " << fname;
getch();
return 0;
}
int n;
int m;
fscanf(in, "%d",&n);
fscanf(in, "%d",&m);
cout <<"Size of matrix: "<< n << " x " << m << "\n";
int plusVek[1];
int minusVek[1];
int i;
int j;
for (i=1; i<m; i++)
{
for (j=1; j<n; j++)
{
int buff;
fscanf(in,"%d",&buff);
if (buff<0)
{

}
}
}
getch();
return 0;
}
//---------------------------------------------------------------------------


может нам дали неправильные условия, и тут текстовый файл.

Автор: Vahappaday 8.11.2010, 14:04

Такс....
Начнём с Ваших вопросов:
1. Для чтения из бинарного файла нельзя использовать fscanf, я бы использовал fread.
2. Этот массив не безразмерный, у него просто динамический размер. Соответственно и используем для него инструментарий работы с динамическими массивами.
Вот пример выделения памяти под двумерный массив:

Код
int n = 10;
int m =15;
float** arr;
arr = new float *[n];
for(int i=0;i<n;i++)
{
arr[i]=new float[m];
}

Ну, под одномерный понятно, надеюсь, как выделять.

Теперь моё замечание:
3. Использование классов - это очень похвально но для доступа к членам данного класса, эти члены надо объявить public, иначе к ним не будет доступа, поскольку по умолчанию они являются private.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)