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

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

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

Восстановить пароль

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

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

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

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

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

Это код на С++ копирование с помощью функции 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, 16:42   #4
StillNoob
Пользователь
 
Регистрация: 27.03.2018
Сообщений: 21
По умолчанию

Цитата:
Сообщение от 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 в 16:47.
StillNoob вне форума Ответить с цитированием
Старый 23.06.2018, 17:54   #5
2Lui
Пользователь
 
Аватар для 2Lui
 
Регистрация: 14.03.2017
Сообщений: 68
По умолчанию

Код:
#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 в 17:56.
2Lui вне форума Ответить с цитированием
Старый 23.06.2018, 20:47   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,657
По умолчанию

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

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

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

Цитата:
Сообщение от 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, 10:04   #9
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,657
По умолчанию

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


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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