Описать одномерный динамический массив с элементами для представления данных сведения о клиентах - C (СИ)
Формулировка задачи:
#include<stdio.h>
#include<conio.h>
void print_Mas(/*что именно передавать??*/) {
printf("+---------------+---------------+--------------------------------+\n");
printf("| razmer | adres | znachenie |\n");
printf("| | |-----------------------|--------|\n");
printf("| | | FIO | god |\n");
printf("|---------------|---------------|-----------------------|--------|\n");
for(i=0; i<M; i++)
printf("| %d | %x | %s | %d |\n",sizeof(n),&n,n,sizeof(g),&g,g);
printf("+---------------+---------------+--------------------------------+\n");
}
void print_Matr(/*что именно передавать??*/) {
printf("+---------------+---------------+--------------------------------+\n");
//как сделать табличку??
// как эти циклы написать??
printf("+---------------+---------------+--------------------------------+\n");
}
int **Form_Matrix(int M, int N)
{
int i,j;
int **M1;
M1= (int**)malloc(M*sizeof(int*));
for(i=0;i<M; i++)
{
M1[i] = (int*)malloc(N*sizeof(int));
for(j=0; j<N; j++)
M1[i][j] = random(111)+20;
}
return M1;
}
void Print_Matrix(int M, int N, float **M1)
{
int i,j;
for(i=0;i<M;i++,printf("\n"))
for(j=0;j<N;j++)
printf(" %3.1d ",M1[i][j]);
}
int Kol(int M, int N,int **M1)
{
int i,j;
int s=0, k=1, s=0, sr=0;
for(i=0; i<M; i++)
for(j=0; j<N; j++)
s=s+M1[i][j];
k=M*N;
sr=sr/k;
for(i=0; i<M; i++)
for(j=0; j<N; j++)
if (M[i][j]>sr && M[i][j]<0) {
cout++;
}
printf("\n V MASSIVE");
printf("\n srednee znachenie elementa=%4d", s);
printf("\n kolichestvo otricatelnih elementov,");
printf("\n bolshe srednego=%4d", cout);
return cout;
}
void main() {
float **M1, **M2;
//что еще надо описать??
printf("\n vvedite kolichestvo elementov massiva: ");
scanf("%d",&n);
printf("\n vvedite elementi massiva: ");
scanf("%s",&);
print_Mas();
printf("\n vvedite kolichestvo elementov massiva: ");
scanf("%d%d",&M&N);
M2=Form_Matrix(M,N);
print_Matr();
cout=Kol(M,N,K);
getch();
}Решение задачи: «Описать одномерный динамический массив с элементами для представления данных сведения о клиентах»
int **mas = new int*[n];
//Зачем- узнаешь потом
int **mas_1 = mas;
for(i = 0; i < n; ++i) {
*mas = new int[m];
mas++;
}
//Теперь mas указывает не на нулевой элемент, а на последний
//Чтобы он указывал на нулевой элемент, надо сделать так
mas= mas_1;
//Вот теперь можешь смело писать так
mas [i] [j]= 456;
//Ну или так
mas_1 [i] [j]= 456;
Объяснение кода листинга программы
В этом коде объявлен двумерный динамический массив (массив массивов) типа int. С помощью оператора new создается массив указателей на int, который будет содержать в себе массивы. Каждый из этих массивов, в свою очередь, будет содержать в себе данные о клиентах. Далее, с помощью цикла for, внутри которого происходит выделение памяти под каждый из массивов с помощью оператора new, создается нужное количество массивов. Указатель mas указывает на последний (нулевой) элемент только что созданного массива. Чтобы указать на первый (нулевой) элемент, используется указатель mas_1. Теперь переменная mas может использоваться для доступа к элементам массива. Пример доступа к элементу: mas[i][j] = 456;