Четверг, 21 Ноября 2024, 16:49

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Начисление стипендии
IzBePgДата: Среда, 02 Июля 2014, 08:24 | Сообщение # 1
Сейчас нет на сайте
Привет всем.
Собственно условия:

Проблема с начислением если есть 3, как мне такое реализовать?
Вот здесь обработка 4 и 5 и кто хорошо учавствует.
Код
//---------------------------------------------------------------------------

#include <vcl.h>
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
int i,n,group,stipi,stip[30];
FILE*f;
struct students
{
char fam[15];
int his;
int math;
int phys;
int prog;
int bio;
int happy;
};
students stud[30];
f=fopen("Students.vbr","r");
printf("\nSet students= ");
scanf("%d",&n);
printf("\nSet stip= ");
scanf("%d",&stipi);
for(i=1;i<=n;i++)
  {
  stip[i]=stipi;
  }
printf("\nSet number group 1 to 3= ");
scanf("%d",&group);
if(group==1)
{
   for(i=1;i<=n;i++)
   {
   if(!fread(&stud[i],sizeof(struct students),1,f))
   {cout<<"end";break;}
   cout<<"Name student:"<<stud[i].fam<<endl<<"His="<<stud[i].his<<endl<<"Math="<<stud[i].math<<endl<<"Phys="<<stud[i].phys<<endl<<"Prog="<<stud[i].prog<<endl<<"Bio="<<stud[i].bio<<endl<<"Happy="<<stud[i].happy<<endl<<"Stipendia="<<stip[i]<<endl<<endl;
   }
   fseek(f,sizeof(stud[i]),SEEK_SET);
   cout<<"______________________________________________"<<endl;
   cout<<"Massive Obrabotka"<<endl<<endl;
   for(i=1;i<=n;i++)
   {
   if(stud[i].his==5 && stud[i].math==5 && stud[i].phys==5 && stud[i].prog==5 && stud[i].bio==5 && stud[i].happy==1)stip[i]=stip[i]+((stip[i]*50)/100);
   else if(stud[i].his==5 && stud[i].math==5 && stud[i].phys==5 && stud[i].prog==5 && stud[i].bio==5 && stud[i].happy==0)stip[i]=stip[i]+((stip[i]*25)/100);
   else if(stud[i].his>=4 && stud[i].math>=4 && stud[i].phys>=4 && stud[i].prog>=4 && stud[i].bio>=4)stip[i]=stip[i]+0;
   else stip[i]=0;
   cout<<"Name student:"<<stud[i].fam<<endl<<"His="<<stud[i].his<<endl<<"Math="<<stud[i].math<<endl<<"Phys="<<stud[i].phys<<endl<<"Prog="<<stud[i].prog<<endl<<"Bio="<<stud[i].bio<<endl<<"Happy="<<stud[i].happy<<endl<<"Stipendia="<<stip[i]<<endl<<endl;
   }
}
if (group>3) printf("\nError.Please program retry :)");
fclose(f);
getche();
         return 0;
}
//---------------------------------------------------------------------------

Добавлено (02.07.2014, 08:24)
---------------------------------------------
Ну что, разве никто не знает, как выручить меня из такой задницы? cry
Я встал только на этом, что даже мыслей нету ни у кого?

Сообщение отредактировал IzBePg - Вторник, 01 Июля 2014, 12:43
CepreuДата: Среда, 02 Июля 2014, 09:40 | Сообщение # 2
был не раз
Сейчас нет на сайте
Цитата
Ну что, разве никто не знает, как выручить меня из такой задницы?

Летом пол 9 школьники еще спят, после ночи в доту biggrin
Хммм... Попробуй так:
Код
else if(stud[i].his==3 || stud[i].math==3 || stud[i].phys==3 || stud[i].prog==3 || stud[i].bio==3 || stud[i].happy==1)stip[i]=stip[i]+((stip[i]*25)/100);
IzBePgДата: Среда, 02 Июля 2014, 10:35 | Сообщение # 3
Сейчас нет на сайте
Не, здесь неправильно.
Мне нужно если у чела есть всего лишь 1 тройка и остальные допустим 4 и 5 и он занимается общественной деятельностью, то ему даётся стипендия
А остальным кукиш), но вот как сделать не знаю, остальные условия я сделал
AkyltistДата: Среда, 02 Июля 2014, 10:59 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
алгоритм проще чем вы думаете. Допустим у Вас 5 предметов, максимальная оценка 5, за общественную работу надбавка +1
Для отличника с общественной работой 5*5+1 = 26; // решено стипендия += стипендия / 2
Для отличника без общественной работы 5*5+0 = 25; // решено стипендия += стипендия / 4
Для тех кто получает стипендию 4*5 = 20 и 4*4+3(тройка)+1(общ) тоже = 20, но при условии одной тройки // решено стипендия = прожиточный минимум / 20;

И так, создаете структуры:
Данные:
Код
int hist;
int math;
int phys;
int info;
int biol;
bool _people;


Студент:
Код
Данные data
int counter
int troika


Группа:
Код
массив из Студент

Алгоритм:
Код
в цикле {
читаем данные
считаем сумму оценк в counter и + 1 если общ. работа
считаем сколько троек и пишем в troika
}


Вывод:
Код
switch ( counter ) {
case 26:
назначить стипендия += стипендия / 2;
break;
case 25:
назначить стипендия += стипендия / 4;
break;
case 20:
if (troika < 2) { назначить стипендия = прожиточный минимум / 20; }
break;
default:
без бабла
break;
}
IzBePgДата: Среда, 02 Июля 2014, 11:24 | Сообщение # 5
Сейчас нет на сайте
Оу так очень легко смотрю, спасибо огромное, выручил happy
AkyltistДата: Среда, 02 Июля 2014, 12:02 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте



Всего наилучшего, развивайтесь дальше!
PS: молоко не купил(
PS: сходил купил
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг