Код:
#include <iostream>
#include <time.h>
#include <stdio.h>
int i;
using namespace std;
void RecMas(char*name,int*a,int n)//запись данных в файл
{
int i;
FILE *out;
if(!(out=fopen(name,"w")))
{
printf("ошибка открытия файла\n");
return;
}
for(i=0;i<n;i++)
{
fprintf(out,"%d ",a[i]);
}
fclose(out);
}
void FvMa(char*name,int*a,int n)//запись данных из файла в массив
{
i=0;
FILE *in;
if(!(in=fopen(name,"rt")))
{
printf("ошибка открытия файла\n");
return;
}
if(in!=NULL)
{
while(!feof(in))
{
fscanf(in,"%d ",&a[i]);
i++;
}
n=i;
}
else cout<<"error\n";
fclose(in);
}
extern void SquareCountingSort(int *a,int n);
void main()
{
setlocale (LC_ALL,".1251");
int n,c;
char*name=new char[81];
int *a;
cout<<"количество элементов массива\n";
cin>>n;
a=new int [n];
cout<<"выберите вариант для получения входных данных:\n 1) непосредственный ввод\n 2) генерирование с помощью датчика случайных чисели запись в текстовый файл\n 3) ввод из текстового файла\n";
cin>>c;
switch (c)
{
case 1:cout<<"введите элементы массива"<<endl;
for(i=0;i<n;i++)
cin>>a[i];
RecMas(1.txt,&a[0],n);//запись массива в файл
SquareCountingSort(a,n);
cout<<"отсортированный массив"<<endl;
for(i=0;i<n;i++)
cout<<a[i]<<' ';
cout<<endl;
break;
case 2:srand(time(0));
for(i=0;i<n;i++)
a[i]=rand()%100;
cout<<"элементы сгенерированного массива"<<endl;
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
RecMas(2.txt,&a[0],n);//запись массива в файл
SquareCountingSort(a,n);
cout<<"отсортированный массив"<<endl;
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
break;
case 3:
FvMa(3.txt,a,n);//запись из файла в массив
SquareCountingSort(a,n);
cout<<"отсортированный массив"<<endl;
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
break;
}
}
и вот подключенный метод сортировки.
Код:
#include <stdio.h>
void SquareCountingSort(int *a,int n)
{
int i,j,c;
int *b;
b=new int [n];
for (i = 0;i<= (n - 1);i++)
{
c = 0;
for (j = 0;j<= (i - 1);j++)
{
if (a[j] <= a[i])
c = c + 1;
}
for (j = i + 1; j<= (n - 1);j++)
{
if (a[j] < a[i])
c = c + 1;
}
b[c] = a[i];
}
for (int i=0; i<n; i++)
a[i]=b[i];
}
все работает просто как сделать так чтобы записывало в массив до конца файла а не количество введенных?