Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > C++ Builder
Перезагрузить страницу Описание структуры с именем Student
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Dias606 Dias606 вне форума
Member
 
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.01.2010
По умолчанию Описание структуры с именем Student - 17.04.2010, 18:14

Вот сама задача:
Описать структуру с именем Student, содержащую следующие поля:
• Фамилия;
• Имя;
• Курс;
• Группа;
• Стипендия;
Написать программу, выполняющую следующие действия:
• Ввод данных с клавиатуры в массив, состоящий из пяти элементов типа Student;
• Вывод на экран фамилий и имён тех студентов, не имеющих стипендии;
• Вывод на экран количества человек на каждом курсе, имеющих повышенную стипендию.
Подскажите алгоритм вот для этого->
"Вывод на экран количества человек на каждом курсе, имеющих повышенную стипендию."

думал думал,так и не смог написать алгоритм,сложно оказалось,если 5 студентов,трое на одном курсе и двое на другом,как сделать чтоб он выводил всего 2 курса(вот в этом у меня траблы). :wall:
Код:
 #include <stdio.h>
 #include <conio.h>
 #define n 5
  void main()
{            clrscr();

  struct student
   {
    char fam[15]; //Familiia
    char nam[10]; //Imia
    char gru[10]; //Gruppa
    int stp;      //Stipendiia
    int kur;      //Kurs

   }
  Student[n];
  int max=0;
  for(int i=0; i<n; i++)
    {
     printf("\nFamiliia studenta->\n");
     scanf("%s",&Student[i].fam);
     printf("\nName studenta->\n");
     scanf("%s",&Student[i].nam);
     printf("\nGruppa studenta->\n");
     scanf("%s",&Student[i].gru);
     printf("\nKurs studenta->\n");
     scanf("%i",&Student[i].kur);
     printf("\nStipendiia studenta->\n");
     scanf("%i",&Student[i].stp);
    }

   printf("\nNe poluchayt stipendiy:\n");
   
  for(i=0; i<n; i++)
    {
     if(Student[i].stp==0)
     printf("%s %s,",Student[i].fam,Student[i].nam);
  for(i=0; i<n; i++)
    {
     if(Student[i].stp>max)
     max=Student[i].stp;
    }                                                          
   getch();
}
Ответить с цитированием
  (#2 (permalink)) Старый
FataLL FataLL вне форума
Member
 
Аватар для FataLL
 
Сообщений: 1,783
Сказал(а) спасибо: 2
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 04.11.2004
По умолчанию 18.04.2010, 04:23

Цитата:
Подскажите алгоритм вот для этого->
"Вывод на экран количества человек на каждом курсе, имеющих повышенную стипендию."
Вариант:
- создаёшь массив, размерностью по количеству курсов (пять или шесть), естественно обнуляешь;
- пробегаешь по своему Student и, если стипендия повышенная, делаешь ++ соответствующего элемента массива курсов
Код:
...
++bogatenkieBuratinos[ Student[i].kur ];
...
- после пробегаешь массив курсов, 0 позиции игнорируешь, остальные выводишь.


Ответить с цитированием
  (#3 (permalink)) Старый
Dias606 Dias606 вне форума
Member
 
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.01.2010
По умолчанию 18.04.2010, 10:05

Вот написал,работает немного неправильно,если вводится 1 курс,допустим 4 человека на 4 курсе с мах.стипендией,то он выводит 4курс4человека,но если ввести 2курс3человека и 5курс2человека с мах. стипендией,то он выводит коряво и неправильно,подскажите что мне исправить,чтоб заработало как нужно. :upset:
Код:
 #include <stdio.h>
 #include <conio.h>
 #define n 5

  void main()
{            clrscr();

  struct student
   {
    char fam[15];  //Familiia
    char nam[10]; //Imia
    char gru[10];  //Gruppa
    int stp;           //Stipendiia
    int kur;          //Kurs

   }
  Student[n];
  int max=0,s[]={0,0,0,0,0,0};
   for(int i=0; i<n; i++)
    {
     printf("\nFamiliia studenta->\n");
     scanf("%s",&Student[i].fam);
     printf("\nName studenta->\n");
     scanf("%s",&Student[i].nam);
     printf("\nGruppa studenta->\n");
     scanf("%s",&Student[i].gru);
     printf("\nKurs studenta->\n");
     scanf("%i",&Student[i].kur);
     printf("\nStipendiia studenta->\n");
     scanf("%i",&Student[i].stp);
    }

   printf("\nNe poluchayt stipendiy:\n");
    for(i=0; i<n; i++)
    {
     if(Student[i].stp>max)
     max=Student[i].stp;
    }
    for(i=0; i<n; i++)
    {
     if(Student[i].stp==0)
     printf("%s %s,",Student[i].fam,Student[i].nam);
    }

   printf("\n\nStudenty poluchaushie maximalnuy stipendiy %i rub.:\n",max);

  for(i=0; i<n; i++)
   {
    if(Student[i].stp==max)
    ++s[Student[i].kur];
   }
  for(i=0; i<n; i++)
   {
    if(s[i]>0)
    printf("%iKurs%iChelovek",Student[i].kur,s[i]);
   }
Ответить с цитированием
  (#4 (permalink)) Старый
FataLL FataLL вне форума
Member
 
Аватар для FataLL
 
Сообщений: 1,783
Сказал(а) спасибо: 2
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 04.11.2004
По умолчанию 18.04.2010, 12:10

Код:
printf( "%i Kurs %i Chelovek", i+1, s[i] );
Ответить с цитированием
  (#5 (permalink)) Старый
Dias606 Dias606 вне форума
Member
 
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.01.2010
По умолчанию 18.04.2010, 12:56

неа FataLL не работает так(
(неправильно работает). :upset:
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
FataLL FataLL вне форума
Member
 
Аватар для FataLL
 
Сообщений: 1,783
Сказал(а) спасибо: 2
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 04.11.2004
По умолчанию 18.04.2010, 14:29

Ещё раз и внимательно
Код:
for(i=0; i<n; i++)
   {
    if( Student[i].stp == max )
    ++s[ Student[i].kur-1 ];
   }
  for(i=0; i<n; i++)
   {
    if( s[i] > 0 )
    printf( "%i Kurs %i Chelovek", i+1 , s[i] );
   }
Скажи, что вводишь и что в результате....
Ответить с цитированием
  (#7 (permalink)) Старый
Dias606 Dias606 вне форума
Member
 
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.01.2010
По умолчанию 18.04.2010, 16:21

Спасиб :-P
теперь все работает,вот из-за этой строчки коряво работал
Код:
++s[ Student[i].kur-1 ];
у меня -1 не стояло,я плохо понимаю как эта строка работает,поэтому сам не догодался.
Ответить с цитированием
  (#8 (permalink)) Старый
FataLL FataLL вне форума
Member
 
Аватар для FataLL
 
Сообщений: 1,783
Сказал(а) спасибо: 2
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 04.11.2004
По умолчанию 18.04.2010, 16:52

Всё ж просто. s - массив, где s[0] - количество стипендиатов с повышенной стипендией 1-ого курса, s[1] - 2-ого курса и т.д. Заметь, что курсы мы считаем с 1, а индекс массива с 0. Значит, чтобы взять количество стипендиатов с курса надо выполнить s[ курс-1 ]. В цикле ты проверяешь студента Student[i] на максимальную стипендию, и если он её получает, то увеличиваешь количество стипендиатов с данного курса на единицу. Можно ++s[ Student[i].kur-1] расписать подробнее
Код:
int kurs = Student[i].kur; // получили курс
kurs = kurs - 1; // сделали соответствие курса индексу массива
s[ kurs ] = s[ kurs ] + 1; // увеличили количество стипендиатов курса
Когда выводим данные, не забываем опять, что курс считаем с 1, а индекс массива идёт с 0
Код:
printf( "%i Kurs %i Chelovek", i+1 , s[i] ); // поэтому для курса пишем i+1
Ответить с цитированием
  (#9 (permalink)) Старый
Dias606 Dias606 вне форума
Member
 
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.01.2010
По умолчанию 19.04.2010, 08:47

Спасиб за разьяснения :P
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Описать Структуру с именем STUDENT DzirT34669 Pascal 1 06.04.2012 12:30
Флешка с фиксированым именем? MaxKa Любые вопросы от новичков 4 23.03.2012 03:25
структура STUDENT hochy_ecshe Вопросы начинающих программистов 0 04.05.2011 21:52
Описание структур с именем MARSH С++ faith0097 Вопросы начинающих программистов 0 13.12.2010 16:34
Напишите класс Student, предоставляющий информацию об имени студента Nastya* Java 3 31.10.2010 17:11
Скопировать файл под другим именем myway Visual Basic 4 30.09.2008 07:46
Сохранение книги под именем определенной ячейки pppmaxa Visual Basic 17 23.12.2007 19:48
Ввести многочлен и записать его под некоторым именем JesterD Вопросы начинающих программистов 18 03.06.2006 07:12
Описать структуру с именем ORDER war Вопросы начинающих программистов 1 12.02.2006 00:26
Описать структуру с именем PRICE Krito Вопросы начинающих программистов 0 22.06.2004 12:47
Может у кого-то есть готовое описание структуры дерева SNMP wasp C++ на Unix 1 26.02.2003 12:27
Описание структуры данных, список массивов, выделяемых при необходимости Glory C++ Builder 1 10.02.2003 16:23



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов