Пользователь
Регистрация: 20.12.2011
Сообщений: 33
|
работа с массивами
Друзья, такой вопрос: есть пример программы. В двух словах: массив заполняется, обнуляется, выводится на экран и в файл. Все это делается для одного массива. Как тоже самое сделать для 3-х массивов размером по 100 элементов? Буду признателен.
Код:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <windows.h>
#include <locale.h>
#define MAXMASSSIZE 10000
#define TEST_MASS_COUNT 20
#define MAX_TICK_COUNT 0xFFFFFFFF
#define TEST_MASS_SIZE 100
#define OUTPUTSTRINGSIZE 10
#define MAX_TEXT_STRING_SIZE 200
#define RAND_RANGE_MAX 100
#define RAND_RANGE_MIN -100
typedef int TMyMass[MAXMASSSIZE];
int InputMyMass(int *piMyMass,int iBeginInputMass, int iEndInputMass);
int FillRandMyMass(int *piMyMass,int iBeginInputMass, int iEndInputMass);
void ZeroizingMyMass(int *piMyMass);
void PrintMyMass(int *piMyMass, int iCardinality);
bool PrintFileMyMass(int *piMyMass,int iCardinality, char*sFileName, char *sComment);
void main(void)
{
setlocale(LC_ALL, "rus");
TMyMass MyMass;
int TempCount=0;
TempCount=InputMyMass(MyMass,0,TEST_MASS_SIZE);
FillRandMyMass(MyMass,TempCount,TEST_MASS_SIZE);
printf("Исходный массив \n");
PrintMyMass(MyMass,TEST_MASS_SIZE);
scanf("\n");
PrintFileMyMass(MyMass,TEST_MASS_SIZE,"MassFile.txt","Исходный массив");
ZeroizingMyMass(MyMass);
printf("Массив после обнуления \n");
PrintMyMass(MyMass,TEST_MASS_SIZE);
TempCount=ReadFileMyMass(MyMass,"MassFile.txt");
printf("Массив после загрузки \n");
PrintMyMass(MyMass,TempCount);
SortMass(MyMass,TempCount);
printf("Массив после сортировки \n");
PrintMyMass(MyMass,TempCount);
PrintFileMyMass(MyMass,TempCount,"MassFile.txt","Отсортированный массив");
unsigned int uiTempTickCount, MaxTickCount=0;
unsigned int MinTickCount=MAX_TICK_COUNT, SumTickCount=0;
printf("Оценка эффективности алгоритма сортировки \n");
for (int i=0;i<TEST_MASS_COUNT;i++)
{
FillRandMyMass(MyMass,TempCount,MAXMASSSIZE);
uiTempTickCount=GetTickCount();
SortMass(MyMass,MAXMASSSIZE);
uiTempTickCount=GetTickCount()-uiTempTickCount;
SumTickCount+=uiTempTickCount;
if (uiTempTickCount>MaxTickCount) MaxTickCount=uiTempTickCount;
if (uiTempTickCount<MinTickCount) MinTickCount=uiTempTickCount;
}
double dArithmeticMiddlingTickCount=(double)SumTickCount/TEST_MASS_COUNT;
printf("Минимальное время сортировки %d милисекунд, максимальное время сортировки %d милисекунд, среднее время сортировки %8.2f милисекунд", MinTickCount, MaxTickCount, dArithmeticMiddlingTickCount);
}
int InputMyMass(int *piMyMass,int iBeginInputMass, int iEndInputMass)
{
int iMasCount=iBeginInputMass;
int iTempReadData;
int iScanfReturnValue;
printf("Задайте элементы массива вручную, по %d чисел в строку \nручной ввод массива завершается, после ввода любого не числового символа",OUTPUTSTRINGSIZE);
for (iMasCount;iMasCount<MAXMASSSIZE&&iMasCount<=iEndInputMass;iMasCount++)
{
if (!(iMasCount%OUTPUTSTRINGSIZE)) printf("\n");
iScanfReturnValue=scanf("%d",&iTempReadData);
if (!iScanfReturnValue)
{ /
printf("Было введено %d элементов\n",iMasCount);
break;
}
piMyMass[iMasCount]=iTempReadData;
}
return iMasCount;
}
int FillRandMyMass(int *piMyMass,int iBeginInputMass, int iEndInputMass)
{
srand( (unsigned)time( NULL ) );
int iMasCount;
double dTemRandData;
for (iMasCount=iBeginInputMass;iMasCount<MAXMASSSIZE&&iMasCount<=iEndInputMass;iMasCount++)
{
dTemRandData=(double)rand();
dTemRandData/=RAND_MAX + 1;
dTemRandData*=RAND_RANGE_MAX - RAND_RANGE_MIN;
dTemRandData+=RAND_RANGE_MIN;
piMyMass[iMasCount]=(int)dTemRandData;
}
return iMasCount;
}
void ZeroizingMyMass(int *piMyMass)
{
for (int i=0;i<MAXMASSSIZE;i++) piMyMass[i]=0;
}
void PrintMyMass(int *piMyMass, int iCardinality)
{
int iMassCount=0;
while (iMassCount<iCardinality&&iMassCount<MAXMASSSIZE)
{
for (int i=0;i<OUTPUTSTRINGSIZE&&iMassCount<iCardinality&&iMassCount<MAXMASSSIZE;i++)
printf("%4d",piMyMass[iMassCount++]);
printf("\n");
}
printf("\n");
}
bool PrintFileMyMass(int *piMyMass,int iCardinality, char*sFileName, char *sComment)
{
FILE *OutputFile=fopen(sFileName,"at");
if (OutputFile)
{
printf("Производим запись в файл %s\n ",sFileName);
int iMassCount=0;
fprintf(OutputFile,"\%s \n",sComment);
while (iMassCount<iCardinality&&iMassCount<MAXMASSSIZE)
{
for (int i=0;i<OUTPUTSTRINGSIZE&&iMassCount<iCardinality&&iMassCount<MAXMASSSIZE;i++)
fprintf(OutputFile,"%4d",piMyMass[iMassCount++]);
fprintf(OutputFile,"\n");
}
fprintf(OutputFile,"\n");
fclose(OutputFile);
printf("Запись в файл %s завершена \n",sFileName);
return true;
}
printf("Неудалось открыть файл %s \n",sFileName);
return false;
}
}
|