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


Помогите пожалуйста оч надо.....
tig81
Правила форума
Где ваши попытки решения? Выкладывайте свои идеи по решению. Иначе тема будет закрыта.
julia_lisha
а в чем проблема?
Harch
Проблема в непонимании алгоритма? Или как?
Mucho
Ребята у меня такая же задача помогите решить... вся проблема в том что тут бинарный файл((( и как считать безразмерный массив, так как в с++ нельзя задавать массив по переменной... а только по константе.

Цитата

//---------------------------------------------------------------------------
#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
Такс....
Начнём с Ваших вопросов:
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 © 2001-2024 Invision Power Services, Inc.