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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2013, 19:49   #1
Devil669
Пользователь
 
Регистрация: 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;
}

}
Devil669 вне форума Ответить с цитированием
Старый 03.05.2013, 19:54   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Стесняюсь спросить, а три раза для разных массивов вызвать нужные функции не пробовал?
Вот же пример:
Код:
TempCount=InputMyMass(MyMass,0,TEST_MASS_SIZE);
FillRandMyMass(MyMass,TempCount,TEST_MASS_SIZE);
Передавай вместо MyMass нужную переменку массива, номер первого и последнего элемента
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.05.2013, 19:54   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Стесняюсь спросить, а три раза для разных массивов вызвать нужные функции не пробовал?
Вот же пример:
Код:
TempCount=InputMyMass(MyMass,0,TEST_MASS_SIZE);
FillRandMyMass(MyMass,TempCount,TEST_MASS_SIZE);
Передавай вместо MyMass нужную переменку массива, номер первого и последнего элемента
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с массивами pashqa Помощь студентам 9 27.05.2011 00:52
Работа с массивами madishka Помощь студентам 2 17.12.2010 21:45
работа с массивами Pitbull_03 Помощь студентам 1 25.03.2010 15:52
Работа с массивами на VB =Apple= Помощь студентам 11 16.06.2009 14:29