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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2016, 16:26   #11
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Опять же вариант:
- Генерируем случайную последовательность из 75-и не повторяющихся чисел со значением от 0 до 255. Это наша первая матрица, в которой все байты заведомо уникальны (из 256-и состояний всегда можно выбрать 75 не повторяющихся ).
Пишем ее в файл. Далее генерируем, методом перестановок байтов, новые матрицы и сразу пишем в файл. Новые матрицы будут уникальными по определению. Память для данных - на 75 байт основной матрицы и на 75 байт вновь генерируемой. Если необходимо писать 1 и 0 в символьном виде, то перед записью в файл проводить обработку (сдвигаем 75 байт и выдвинутый бит + '0' пишем в файл). Да, со временем напряг, но основное время, как понимаю, работа с файлом.

Как-то так, ...
Можно и повторяющиеся, оно ведь не выровнено по 8 элементам/строку, но это (предложенный вариант) уже превратится в комбинаторную задачу, что не правильно (будет миллион уникальных матриц, вместо N уникальных из миллиона случайных)
GreenWizard вне форума Ответить с цитированием
Старый 21.10.2016, 20:08   #12
Ar2emiS
Пользователь
 
Регистрация: 18.10.2016
Сообщений: 27
По умолчанию

Как исправить??

Код:
#include <stdio.h>                
#include <stdlib.h>
int main(void)
{
int n=20,l,k=30; 
printf("Input l="); 
scanf("%d", &l);
    //создание 3 мерного динамического массива 
	int ***arr=(int ***)malloc(l * sizeof(*arr));
	for (int i2=0; i2<l; i2++)
	{
		arr[i2]=(int **)malloc(n * sizeof(*arr[i2]));
        for (int i3=0; i3<n; i3++)
	    {
		arr[i2][i3]=(int *)malloc(k * sizeof(*arr[i2][i3]));
        }
    }
//заполнение массива
for (int i1=0; i1<l; i1++)
{
for (int i2=0; i2<n; i2++)
{
for (int i3=0; i2<k; i3++)
{
arr[i1][i2][i3]=rand()%2;
printf(" %d",arr[i1][i2][i3]);
}
printf("\n");
}
printf("\n");
printf("\n");
}

//освобождение памяти
for (int i=0; i<l; i++)
{
for (int j=0; j<n; j++)
{
 free(arr[i][j]);
}  
free(arr[i]);
}
free(arr);

getchar();
	getchar();
	return 0;
}


Пожалуйста, оформляйте Ваш код согласно правилам.

Последний раз редактировалось Вадим Мошев; 21.10.2016 в 21:44.
Ar2emiS вне форума Ответить с цитированием
Старый 21.10.2016, 20:13   #13
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

в строке 30 битовых элементов, что вполне укладывается в int

получаем случайное число диапазона 0 ... 2^30 -1 это сразу готовая строка нашей матрицы.
еще двадцать чисел и матрица готова.

Да и сравнивать можно и лучше сразу "строки" если их хранить как числа.
И места в памяти 10^6 матриц в этом случае займут в 30 /8 раз меньше.

А для "одной" записи их можно и распаковать, если уж очень очень потребуется, хотя записать для хранения можно числа, без разворачивания их в "двоичную" строку.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 21.10.2016, 20:14   #14
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Ошибка примитивная (ты внимательно переписать код не можешь?).

Перепроверь (внимательно) каждую букву и цифру куска кода с начало

"//заполнение массива"

и вниз.

И перечень "#include"-ов перепроверь.

Последний раз редактировалось Вадим Мошев; 21.10.2016 в 21:45.
ura_111 вне форума Ответить с цитированием
Старый 21.10.2016, 20:41   #15
Ar2emiS
Пользователь
 
Регистрация: 18.10.2016
Сообщений: 27
По умолчанию

что-то не могу найти ошибку,могли бы указать?
А по поводу #include<malloc.h>, то компилятор выдает,что можно без нее.
Ar2emiS вне форума Ответить с цитированием
Старый 21.10.2016, 21:15   #16
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Скопировал и не поправил:

3.jpg
ura_111 вне форума Ответить с цитированием
Старый 21.10.2016, 21:40   #17
Ar2emiS
Пользователь
 
Регистрация: 18.10.2016
Сообщений: 27
По умолчанию

Стыдно)спасибо!
Ar2emiS вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнить матрицу Р размерности m x n значениями элементов вектора Q размерности k = m x n Olevander Помощь студентам 0 23.11.2014 10:09
Создать базу данных (язык C) Alex53rus Помощь студентам 5 04.06.2014 01:02
Умножение двух матриц одинаковой размерности 3х3 в Delphi Htebazile Помощь студентам 8 19.09.2013 18:18
Создание Матриц. Язык Си K0T9RA Помощь студентам 3 03.04.2011 17:34
доказательство, что произведение матриц А и В не коммутативно. Язык С sanela Помощь студентам 2 26.01.2010 02:11