Описать одномерный динамический массив с элементами для представления данных сведения о клиентах - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте Все !! Если Вы находитесь на этом форуме, значит Вы - связаны с программированием, которое сейчас очень важное для современного человека и которое очень непонятное как для новичка. Чтобы получить навык программирования нужно программировать, но можно же одновременно и помогать другим, да?? Тогда я очень нуждаюсь в Вашей помощи обретения такового навыка. Значит, у меня есть задачка, к которой очень хочется написать код. А так как я новичок, который нуждается в помощи профи, то я именно здесь. Вот задачка: Составить программу на языке Си, в которой выполнить: 1. Для одномерных массивов: 1) описать одномерный динамический массив с элементами для представления данных сведения о клиентах (ФИО, год рождения); 2) ввести количество элементов с клавиатуры; 3) ввести значение элементов с клавиатуры; 4) вывести адреса и значения элементов массива в виде таблицы; 5) вычислить значения ФИО самого старшего клиента; 6) сохранить результаты в текстовый файл. 2. Для двухмерных массивов: 1) описать двухмерный динамический массив с элементами типа int; 2) ввести количество элементов в строке и столбце с клавиатуры; 3) заполнить от левого верхнего угла «змейкой» вниз – вправо – вверх - вправо элементы массива с использованием генератора случайных чисел в диапазоне [20,130]; 4) вывести адреса и значения элементов массива в виде таблицы; 5) вычислить значения количества отрицательных элементов, больших среднего; 6) сохранить результаты в текстовый файл. Таблицы: для одномерного массива ----------------------------------------------- №| адрес | размер | значения | | (байт) | ------------------------ | | | ФИО | год ---------------------------------------------- для двумерного ---------------------------------------------- № | 0 |... | М-1 ---------------------------------------------- 0 | адрес |... | адрес значение|... | значение ----------------------------------------------- ... ----------------------------------------------- N-1| адрес |... |адрес |значение|... |значение ------------------------------------------------ Вот я что-то написала:
#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();
 
}
Жду помощи в доделывании программы))

Решение задачи: «Описать одномерный динамический массив с элементами для представления данных сведения о клиентах»

textual
Листинг программы
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;

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы