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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2017, 22:52   #1
Bard.
Пользователь
 
Регистрация: 22.04.2017
Сообщений: 19
По умолчанию Работа с бинарными файлами

Доброго! Помогите реализовать данную программу, ничего на ум не приходит уже :
Создать файл, содержащий 10 одномерных целочисленных
массивов a1, a2,..., a10, заполненных случайными числами от –50
до 50. Переписать в другой файл те массивы, у которых сумма
элементов больше 0.
В случае двумерного массива я её сделал, помогите пожалуйста сделать её в случае одномерного массива. Заранее спасибо!
Bard. вне форума Ответить с цитированием
Старый 26.05.2017, 23:05   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Bard. Посмотреть сообщение
В случае двумерного массива я её сделал, помогите пожалуйста сделать её в случае одномерного массива.
давайте ваш код для случая двухмерного массива, посмотрим, что можно переделать.

а вообще, я бы просто сделал тип записи - массив и с ним оперировал:
Код:
const
  N = 10;
  size_array = 10;

type 
 TOneArray = array[1..size_array] of integer;

var
  f : file of TOneArray;
  Arr : TOneArray;
  i,j : integer;

begin
  Randomize;

  Assign(f, 'Arrays.bin');
  Rewrite(f);
  for i:=1 to N  do begin
     for j:=1 to size_array do 
        Arr[j] := -50 + Random(101);
     Write(f, Arr); 
    end;
  Close(f)
....

Последний раз редактировалось Serge_Bliznykov; 26.05.2017 в 23:11.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.05.2017, 23:09   #3
Bard.
Пользователь
 
Регистрация: 22.04.2017
Сообщений: 19
По умолчанию

Код:
#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <ctime>
#include <conio.h>
#include <iomanip>
using namespace std;
const unsigned int DIM1 = 10;
const unsigned int DIM2 = 10;
int ary[DIM1][DIM2];
#define N 100
int main()
{
	FILE *fp;
	int n, sum, A[10], B[N];
	srand(time(0));
	cout << " File F1.bin: " << endl;
	fp = fopen("F2.bin", "w");
	for (int i = 0;i < DIM1;i++) {
		sum = 0;
		for (int j = 0; j < DIM2;j++) {
			ary[i][j] = rand () % 100 - 50;
			cout << setw(4) << ary[i][j];
			sum += ary[i][j];
			A[i] = sum;
			fwrite(&ary[i][j], sizeof(int), 1, fp);
		}
		cout <<setw(6) << sum;
		cout << endl;
	}
	fclose(fp);
	fp = fopen("F1.bin", "rb");
	fread(B, sizeof(int), N, fp);
	fclose(fp);
	cout << "File F2.bin: " << endl;
	fp = fopen("F2.bin", "w");
	for (int i = 0;i < DIM1;i++) {
		for (int j = 0; j < DIM2;j++) {

			if (A[i] > 0) cout << setw(4) << ary[i][j];
			if (A[i] > 0) fwrite(&ary[i][j], sizeof(int), 1, fp);
		}
		if (A[i] > 0) cout << endl;
	}
	fclose(fp);
	_getch();
}
Bard. вне форума Ответить с цитированием
Старый 26.05.2017, 23:10   #4
Bard.
Пользователь
 
Регистрация: 22.04.2017
Сообщений: 19
По умолчанию

И еще преподаватель сказал, что я не пользуюсь чтением данных и просто тупо вписываю результаты в файлы.
Bard. вне форума Ответить с цитированием
Старый 26.05.2017, 23:15   #5
Bard.
Пользователь
 
Регистрация: 22.04.2017
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
а вообще, я бы просто сделал тип записи - массив и с ним оперировал
лучше вот в таком случае, примерно, какой я скинул
Bard. вне форума Ответить с цитированием
Старый 26.05.2017, 23:15   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

C++ — это не ко мне, извините...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.05.2017, 23:49   #7
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Расскажи (по-строчно), что делает программа...

Обычно, одномерный массив делается просто с одним "for" и всё (в отличие от двумерного- там используется 2-а "for"-а).
ura_111 вне форума Ответить с цитированием
Старый 26.05.2017, 23:51   #8
Bard.
Пользователь
 
Регистрация: 22.04.2017
Сообщений: 19
По умолчанию

Да это я всё прекрасно понимаю) Там просто немного другое использование и немного другие функции
Bard. вне форума Ответить с цитированием
Старый 27.05.2017, 00:03   #9
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Я не понял, какие "другие функции" и какое "другое использование"?

Я так понял, у тебя сделано для 2-мурного массива , а надо переделать под одномерный (их будет 10шт)...
В той манере написание кода, для первого одномерного массива:
Код:
fwrite(&ary1[i], sizeof(int), 1, fp);
да и всё...

Ещё не понятно, сколько элементов в одномерных массивах?
Или они динамические?
ura_111 вне форума Ответить с цитированием
Старый 27.05.2017, 00:22   #10
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Напомню, использовать надо те функции, которые учили на парах...
Чтобы у преподавателя было меньше вопросов...
Если ты написал "вот так", значит и надо продолжать в том же направлении... А какие ещё "другие функции"?
ura_111 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с бинарными файлами Bard. Помощь студентам 7 23.04.2017 14:47
Работа с бинарными файлами в СИ. Pug_from_Mordor Помощь студентам 3 27.05.2015 20:01
С# работа с бинарными файлами bondik Общие вопросы .NET 1 01.10.2010 12:18
работа с бинарными файлами klykovka Помощь студентам 7 28.04.2010 11:07
Работа с бинарными файлами StudentPolitech Общие вопросы C/C++ 0 19.05.2009 23:48