Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

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

Ответ
 
Опции темы
Старый 23.06.2018, 14:10   #1
StillNoob
Пользователь
 
Регистрация: 27.03.2018
Сообщений: 18
Репутация: 10
По умолчанию Записать массив в файл и использовать его оттуда.

Всем привет.
Такая Задача:Оценка 3 методов сортировки одномерных массивов, нужно для каждого проверить массив из 1000,1500,2000,2500
элементов ,заполнить их нужно случайными числами.
Проблема вот в чём мы должны заполнить массив и использовать одинаковый для всех методов сортировки,
у меня сначала были мысли только копировать в другой массив,но это очень долго и наверно неправильно.
А потом подумал что можно записать в файл 4 массива и оттуда их использовать,сейчас читаю про это,но не понимаю как это сделать,помогите или посоветуйте,пожалуйста(На языке си не си++).
StillNoob вне форума   Ответить с цитированием
Старый 23.06.2018, 16:00   #2
digitalis
Участник клуба
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Адрес: Минск
Сообщений: 869
Репутация: 346
По умолчанию

если только эти массивы представляют историческую или художественную ценность , то их стоит сохранять в файле. а для сравнения методов вполне катит первый вариант: закинуть их всех в память, а при тестировании методов сортировки копировать нужный в рабочий массив.
насчет "долго" - вряд ли чтение из файла будет быстрее копирования из памяти в память. и что, речь идет о микросекундах? корректировка траектории ракеты?

Последний раз редактировалось digitalis; 23.06.2018 в 16:03.
digitalis вне форума   Ответить с цитированием
Старый 23.06.2018, 17:30   #3
2Lui
Форумчанин
 
Аватар для 2Lui
 
Регистрация: 14.03.2017
Сообщений: 67
Репутация: 0
По умолчанию

Это код на С++ копирование с помощью функции memcpy уверен на си тоже есть.
Код:

#include <iostream>
#include <string.h> //include  memcpy 
using namespace std;

int main()
{
	int arr[10];
	int buff[10];
	for (int i = 0; i < 10; i++){
		arr[i] = rand() % 100;
	}
	for (int i = 0; i < 10; i++) {
		cout << arr[i] << " ";
	}
	cout << endl;
	memcpy(buff,arr,sizeof(buff));
	for (int i = 0; i < 10; i++){
		cout << buff[i]<< " ";
	}
	system("pause");
    return 0;
}

2Lui вне форума   Ответить с цитированием
Старый 23.06.2018, 17:42   #4
StillNoob
Пользователь
 
Регистрация: 27.03.2018
Сообщений: 18
Репутация: 10
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
речь идет о микросекундах?
Цитата:
Сообщение от 2Lui Посмотреть сообщение
уверен на си тоже есть.
понял,спасибо.
а ещё не могли бы помочь,нужно время измерить сортировки
я использовал это
(сортировка методом выбора)
Код:

time_h start,end;//библиотека <time.h>
start=time(NULL);
for (int i = 0; i < N; i++)
{
    minPosition = i;
    for (int j = i + 1; j < N; j++)
        if (mass[minPosition] > mass[j])
            minPosition = j;
    tmp = mass[minPosition];
    mass[minPosition] = mass[i];
    mass[i] = tmp;
}
end=time(NULL);
printf("на сортировку потребовалось %f секунд.\n", difftime(end, start));

выдаёт постоянно 0 сек,видимо потому что массив маленький
не могли бы вы подсказать как в наносек-х выводить либо может быть есть другой способ время измерить?

Последний раз редактировалось StillNoob; 23.06.2018 в 17:47.
StillNoob вне форума   Ответить с цитированием
Старый 23.06.2018, 18:54   #5
2Lui
Форумчанин
 
Аватар для 2Lui
 
Регистрация: 14.03.2017
Сообщений: 67
Репутация: 0
По умолчанию

Код:

#include <time.h>
 
    clock_t start, end;
 
    start = clock();
 
    /* Код, время выполнения которого нужно измерить */
  
    
    end = clock();
 
    printf("The above code block was executed in %.4f second(s)\n", ((double) end - start) / ((double) CLOCKS_PER_SEC));
    
}


Последний раз редактировалось 2Lui; 23.06.2018 в 18:56.
2Lui вне форума   Ответить с цитированием
Старый 23.06.2018, 21:47   #6
digitalis
Участник клуба
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Адрес: Минск
Сообщений: 869
Репутация: 346
По умолчанию

Цитата:
Сообщение от StillNoob Посмотреть сообщение
как в наносек-х выводить
Ничего не перепутали ? именно в нано- -- не в пико-, не в фемто- ? Спасибо, посмешил.
Да даже один и тот же метод на разных наборах данных будет давать разброс +/- десятки микросекунд (это я еще не по максимуму выразился). Плюс к тому же прога работает не в реалтаймовой ОС - тут и на тики системных часов откликаться надо, на прорисовку экрана, и мышкой кто-либо шевельнет... Можно говорить только об относительной скорости работы алгоритмов.
Хотя если выделить задаче наивысший приоритет... Но не буду фантазировать, бо сам занимался этим очень давно - еще на СМ-4.

Последний раз редактировалось digitalis; 24.06.2018 в 11:07.
digitalis вне форума   Ответить с цитированием
Старый 23.06.2018, 23:36   #7
StillNoob
Пользователь
 
Регистрация: 27.03.2018
Сообщений: 18
Репутация: 10
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Ничего не перепутали ?Спасибо, посмешил.
по-моему от тебя никакой помощи.
просто постебаться заходишь?
StillNoob вне форума   Ответить с цитированием
Старый 23.06.2018, 23:36   #8
StillNoob
Пользователь
 
Регистрация: 27.03.2018
Сообщений: 18
Репутация: 10
По умолчанию

Цитата:
Сообщение от 2Lui Посмотреть сообщение
Код:

#include <time.h>
 
    clock_t start, end;
 
    start = clock();
 
    /* Код, время выполнения которого нужно измерить */
  
    
    end = clock();
 
    printf("The above code block was executed in %.4f second(s)\n", ((double) end - start) / ((double) CLOCKS_PER_SEC));
    
}

спасибо
StillNoob вне форума   Ответить с цитированием
Старый 24.06.2018, 11:04   #9
digitalis
Участник клуба
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Адрес: Минск
Сообщений: 869
Репутация: 346
По умолчанию

Ну извини - помочь ловить пикосекунды - не в моих силах. Что касается меня, то когда меня ткнут носом в бредовость нереальность моих хотелок - я трезво обдумываю и говорю: "Спасибо, ребята" . Именно с этой целью был мой пост, а не стёба ради. "Чего же ты хочешь?" - так называлась книга одного малоизвестного писателя Кочетова. Этот вопрос полезно иногода задавать самому себе.
А все, что в моем посте, начиная со 2-й строчки - неопровержимая правда.
digitalis вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
есть некоторый файл тхт, в котором находится 10 чисел. Задача: найти НОД этих чисел и записать его в другой тхт файл. Rezanans Помощь студентам 1 22.10.2017 22:38
Файловый ввод/вывод в языке С: двоичный файл и записать в него двумерный целочисленный массив размером n*m, записать в файл F2... Анастасия_А Помощь студентам 0 28.03.2016 15:07
записать в файл массив, а в другой файл вывести повторные значения элементов массива С++ carrie bradshaw Помощь студентам 3 01.02.2014 23:27
Прикрепить файл к ЕХЕ. И вытащить его оттуда. TwiX Общие вопросы Delphi 2 16.06.2010 20:26
Создать массив целых чисел и записать его в файл Desvi Паскаль 3 07.06.2010 19:04


02:59.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru