В том случае когда объем обрабатываемых данных в массиве заранее неизвестен целесообразно использовать динамические массивы, выделяя память под массив во время выполения программы и точно в том объеме, который требуют исходные данные для этого достаточно определить указатель базового типа элемента массива а далее выделить память с помощью операции имя используя следующий синтаксис:
имя_указателя = new базовый_тип [количество_элементов];
Пример:
Дан двумерный массив. Разместить строки матрицы таким образом, чтобы элементы заданного столбца были упорядочены по возрастанию:
#include <stdio.h>
void main()
{
int **arr; //Указатель на указательна целое число
int i,j,m.n.k;
printf(“Введите количество строк и столбцов”);
scanf(“%d %d”, &m, &n);
printf(“Введите элементы массива”);
arr = new int* [m];
for (i=0; i<m;i++)
{
arr[i]= new int [n];
for (j=0; j<n;j++) scanf(“%d”,&arr[i][j]);
}
printf(“Задайте номер сортируемого столбца”);
scanf(“%d”.&k);
for (i=0; i<m;i++)
{
int imin=i;
for (j=i+1; j<m;j++)
if(arr[j][k-1]<arr[imin][k-1]) imin=j;
if (imin!=i)
{
int *b;
b=arr[imin];
arr[imin]=arr[i];
arr[i]=b;
}
printf(“\n”);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf(“%d”, arr[i][j]);
printf(“\n”);
for (i=0;i<m;i++)
delete [] arr[i];
delete[] arr;
}
//Читает текстовый файл в строковый массив и выводит его на экран.
#include <stdio.h>
#include <string.h>
int main()
{
FILE *f;
char txt[100][80];
int i=0,j;
f =fopen("1.txt","r");
do
{
fgets(txt[i],79,f);
txt[i][strlen(txt[i])-1]='\0';
i++;
}
while(feof(f));
i--;
for(j=0;j<i;j++) printf("%s\n",txt[j]);
while(fgets(txt[i],79,f))
{
txt[i][strlen(txt[i])-1]='\0';
i++;
}
return 0;
}
for (j...
Программа создаёт бинарный файл целых чисел, упорядоченных по возрастанию. Для существующего файла добавляет файл, заданным количествм чисел, сохраняя условия упорядоченности.
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *f;
int n,i,b;
f=fopen("2.dat","rbt");
if(f)
{
fseek(f,-2,SEEK_END);
fread(&b,sizeof(int),1,f);
fseek(f,o,SEEK_END);
}
else
{
f=fopen("2.dat","wbt");
b=0;
}
printf("%d",&n);
randomize();
for(i=0,i<n,i++)
{
b+=random(4);
printf("%d",b);
fwrite(&b,sizeof(b),1,f);
}
printf("\n"); rewind(f);
while(!feof(f))
{
if(fread(&b,sizeof(int),1,f))
printf("%d",b);
}
fclose(f);
printf("\n");
return 0;
}