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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2020, 02:19   #1
Мишанька
Новичок
Джуниор
 
Регистрация: 04.09.2019
Сообщений: 3
Восклицание Разделение массива на два

Как здесь организовать разделение студентов по двум группам: группа поступивших в одном году и группа подступивших в других года (например группа 2018 и группа остальных годов) и найти среди обеих групп наиболее успевающих и неуспевающих студентов?
Код:

#include <iostream>
#include <stdio.h>
#include <clocale>
struct ses{
    int matan;
    int linal;
    int yp;
    int fizik;
    int fizra;
    int angl;
    int sib;
    int asa;
  };
struct dr{
  int day;
  int month;
  int year;
};
struct student{
  char fam[20];
  char im[20];
  char otch[20];
  struct dr dr;
  int dp;
  char fak[20];
  char kaf[10];
  char grup[12];
  int nom;
  struct ses ses;};
 
 
int main()
{
int N = 1; // количество студентов 
int M = 1; // количество сессий 
setlocale(LC_ALL,"rus");
student nomer[N];
for (int i=0;i<N;i++){ 
  printf("Введите следующую информацию о студенте: \n");
  printf("ФИО > ");
  scanf ("%s %s %s",&nomer[i].fam,&nomer[i].im,&nomer[i].otch);
  printf("Дата рождения > ");
  scanf ("%d",&nomer[i].dr.day);
  scanf ("%d",&nomer[i].dr.month);
  scanf ("%d",&nomer[i].dr.year);
  printf ("Год поступления в ВУЗ > ");
  scanf ("%d",&nomer[i].dp);
  printf("Название факультета > ");
  scanf("%s",&nomer[i].fak);
  printf("Шифр кафедры > ");
  scanf("%s",&nomer[i].kaf);
  printf("Номер группы > ");
  scanf("%s",&nomer[i].grup);
  printf("Номер зачетной книжки >");
  scanf("%d",&nomer[i].nom);
  for (int j=0;j<M;j++){
  printf ("Сессия %d", j+1);
  printf ("\nВведите оценки по математическому анализу, линейной алгебре, языкам программирования, физике,\nфиз-ре, иностранному языку, стандартам ИБ и анализу сложности алгоритмов и именно в таком порядке. \n");  
  scanf ("%d",&nomer[j].ses.matan);
  scanf ("%d",&nomer[j].ses.linal);
  scanf ("%d",&nomer[j].ses.yp);
  scanf ("%d",&nomer[j].ses.fizik);
  scanf ("%d",&nomer[j].ses.fizra);
  scanf ("%d",&nomer[j].ses.angl);
  scanf ("%d",&nomer[j].ses.sib);
  scanf ("%d",&nomer[j].ses.asa);
};
};
for (int i=0;i<N;i++){
printf("\nФИО: %s %s %s\n",nomer[i].fam,nomer[i].im,nomer[i].otch);
printf("\nДата рождения: %d.%d.%d\n",nomer[i].dr.day,nomer[i].dr.month,nomer[i].dr.year);
printf("\nГод поступления в ВУЗ: %d\n",nomer[i].dp);
printf("\nФакультет: %s\n",nomer[i].fak);
printf("\nКафедра: %s\n",nomer[i].kaf);
printf("\nГруппа: %s\n",nomer[i].grup);
printf("\nНомер зачетной книжки: %d\n",nomer[i].nom);
  for (int j=0;j<M;j++){
  printf("\nСессия %d\n",j+1);
  printf ("\nМатематический анализ %d\n",nomer[j].ses.matan);
  printf ("\nЛинейная алгебра %d\n",nomer[j].ses.linal);
  printf ("\nЯзыки программирования %d\n",nomer[j].ses.yp);
  printf ("\nФизика %d\n",nomer[j].ses.fizik);
  printf ("\nФизическая культура %d\n",nomer[j].ses.fizra);
  printf ("\nИностранный язык %d\n",nomer[j].ses.angl);
  printf ("\nСтандарты ИБ %d\n",nomer[j].ses.sib);
  printf ("\nАнализ сложности алгоритмов %d\n",nomer[j].ses.asa);
};
};
}

Последний раз редактировалось Мишанька; 29.04.2020 в 09:53.
Мишанька вне форума Ответить с цитированием
Старый 29.04.2020, 08:42   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Так понимаю, что для ввода данных о студентах нужен динамический массив.
У вас формируются данные на одного студента (N = 1).
О работе с динамическими массивами Help или Сеть вам в помощь.

Если нужен статический массив, то N надо определить соответственно

Далее заполняете массив данными.
Затем примерно так:
Описать два массива с элементами типа student - две группы.
Описать два индекса для этих групп: m, n
Код:
В цикле просматриваем основной список студентов и
Если nomer[i].dp != <год поступления>
      Вторая группа[n] = nomer[i] // всю запись о студенте в эту группу
       n++
Иначе
      Первая группа[m] = nomer[i] // всю запись о студенте в эту группу
       m++
Далее просматриваете каждую группу и находите ответ на второй вопрос.

PS: В Си не очень разбираюсь, но ведь вам нужен алгоритм.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 29.04.2020, 09:13   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,551
По умолчанию

Неправильно применен термин "сортировка" - это расположение элементов внутри одного массива по возрастанию или убыванию. Тут - разделение массива на 2 по определённому признаку.

Последний раз редактировалось digitalis; 29.04.2020 в 10:04.
digitalis вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка в структуре (С++) GrekaOnne Помощь студентам 1 28.12.2016 07:39
Сортировка в структуре. Sorento2 Общие вопросы C/C++ 8 19.12.2012 01:05
сортировка в структуре Oleg34 Общие вопросы C/C++ 1 16.09.2011 21:03
Сортировка фамилий в структуре Красавчег))) Общие вопросы C/C++ 2 04.01.2010 01:07
Паскаль: шейкерная сортировка на динамической структуре. kotzebu Фриланс 1 01.05.2009 12:48