Jump to content

въпрос за програма на с++


marcelo

Препоръчан пост

Някои може ли да ми помогне с това условие от задача за с++

-намиране на броя на прекъсващите жени (прекъсват студенти с повече от 2 двойки).

Благодаря предварително!

Link to comment
Сподели другаде

Поне дай цялата задача, защото така нищо не се разбира. И все пак щом ти искат някакво условие, ползвай if. Например:

 

...

if(student>=2) br++;

...

 

student и br са променливи

Link to comment
Сподели другаде

Условието е:

 

За група студенти за зададени име, ЕГН, фак. №, оценки по 10 дисциплини, среден успех. Да се създаде програма, използваща подпрограми за:

-създаване на файл с информация за групата студенти,без да се въвежда среден успех;

-изчисляване на средния успех на всеки един от студентите;

-намиране на броя на прекъсващите жени (прекъсват студенти с повече от 2 двойки).

 

Това съм сътворил до момента:

#include <stdio.h>
#include <conio.h>
struct student{
char ime[31]; char EGN[11]; long FN; int oc[10];float sru;
};
FILE *fp;
char fime[31];
student stud;
// vuvejdane na 1 sudent
void readStud(student *st) {
 int i;
 printf("ime:");gets(st->ime);
 printf("egn:");gets(st->EGN);
 printf("fak.nomer:");scanf("%ld",&st->FN);
 printf("ocenki po 10 disiplini\n");
 for (i=0;i< 10;i++){
 printf("Po %d-a disciplina:",i+1);scanf("%d",&st->oc[i]);
 }
 int j,s=0;
  for(j=0;j<10;j++) s+=st->oc[j];
  st->sru=s/10.0;
  getchar();
  }
 
 //izvejdane na studenti
void writeStud(student st) {
  int i;
printf("ime: %s\n",st.ime);
printf("egn: %s\n",st.EGN);
printf("fak.nomer:%06ld\n",st.FN);
printf("Ocenki: ");
for (i=0;i<10;i++) printf("%d ",st.oc[i]);
printf("\n");
printf("Sreden uspeh: %4.2f\n",st.sru);
}

// suzdavane na fail
void sazdaj(){
 fp=fopen(fime,"w");fclose(fp);
 printf("failut e suzdaden!\n");
 }
//dobavqne kym failut	
void dobavi (){	 
fp=fopen(fime,"a+b");
char ch;
do {
   readStud(&stud);
   fwrite(&stud,sizeof(stud),1,fp);
   printf("o6te (d/n)?");ch=getchar();getchar();
   }while (ch!='n');
   fclose (fp);
   }
void spisukall() {
  int k=0;
  fp = fopen(fime,"rb");
  fread(&stud,sizeof(stud),1,fp);
  while (!feof(fp)) {
		writeStud(stud);
		k++;
		fread(&stud,sizeof(stud),1,fp);
		}
		fclose(fp);
		printf("Namereni: %d\n",k);
		}
 //glavna programa
 main () {
 char otg[3];
 printf("zadaite ime na failut:");gets(fime);
 do {
	 printf("   Menu\n");
	 printf("   1. Suzdavane na prazen fail\n");
	 printf("   2. Dobavqne kum failut\n");
	 printf("   3. Obsht spisuk\n");
 
	 printf(" Izbor (0-za krai): ");gets(otg); 
	 switch (otg[0]) {
	   case '1':sazdaj();break;	 
	   case '2':dobavi();break; 
	   case '3':spisukall();break;
	 
		   }
	   }while (otg[0]!='0');
 }

Link to comment
Сподели другаде

Според мен, най-лесно ще е да проверяваш всеки student по следния начин:

bool check(student s){
int i = 0,c = 0;
if(s.EGN[8] % 2 == 1){
	while(i < 10){
		if(s.oc[i] == 2)
			c++;
		i++;
	}
}
if(c => 2)
	return true;
return false;
}

 

Може и да има грешки в кода ми, но нямам под ръка редактор.

Link to comment
Сподели другаде

Според мен, най-лесно ще е да проверяваш всеки student по следния начин:

bool check(student s){
int i = 0,c = 0;
if(s.EGN[8] % 2 == 1){
	while(i < 10){
		if(s.oc[i] == 2)
			c++;
		i++;
	}
}
if(c => 2)
	return true;
return false;
}

 

Може и да има грешки в кода ми, но нямам под ръка редактор.

 

Този код трябва да е като отделна функция нали?

Link to comment
Сподели другаде

  • 1 year later...

Здравейте и от мен...

първо искам да се извиня на автора на темата, че пиша в нея по моят въпрос, но просто условието на задачата ми е същото, само с 1 различно подусловие и реших да не създавам още една такава тема... :)

 

Значи задачата е това:

За групата студенти са зададени име, ЕГН, фак. номер, оценките по 10 дисциплини, среден успех. Да се създаде програма, използваща подпрограми за:

- създаване на масив с информация за групата студенти, без да се въвежда ср. успех;

- изчисляване на средния успех на всеки един от студентите;

- да се създаде масив с фак. номер на студентите, които трябва да се явят на изпит по първата дисциплина.

 

трябва ми последното подусловие... надявам се някой да помогне

благодаря предварително на всички :)

Link to comment
Сподели другаде

Нека приемем, че ползваш структура от данни, подобна на тази:

 

struct students {    
   char studName[40]; // store student name
   unsigned F_num[20]; // store facultet number
   char EGN[20]; // store student EGN
   double Ratings[10]; // store student ratings
   double avgRatings; // store average rating for any student
} std[max_students];

 

Ако условието за поява на изпит е да има оценка по предмета ( 2.00 >= оценка < 2.50 ), то въртиш един цикъл и обхождаш всички членове на структурата като проверяваш стойността на Ratings[0], ако оценката наистина е двойка - пазиш факултетния номер в предварително създаден двумерен масив.

 

Обхождането си го представям по този начин:

 

for(unsigned i=0, j = 0; i<stud_MAX; i++) {
   
   if( std[i].Ratings[0] < 2.50 ) // condition
       {
           stud_exam[j++][0] = std[i].F_num;
       }
}

 

j - брояч за stud_exam масивът, който се инкрементира само когато е изпълнени условието за изпит

stud_exam[m][n] - двумерен масив, предварително деклариран, задължително от тип unsigned - пази факултетните номера когато е изпълнено условието, примерна декларация: unsigned stud_exam[stud_MAX][1], как се подава двумерен масив на функция: http://bytes.com/topic/c/answers/726259-how-pass-multi-dimensional-array

 

---

 

Not tested!

Link to comment
Сподели другаде

  • 7 months later...

Здравейте имам проблем с една програма която ми е доста важна.

 

Да се напише програма,която въвежда символен низ с максимална дължина L.Да се състави нов стринг,в който всеки символ от ниския регистър е обърнат в символ от висок регистър и обратно,а празните интервали са пропуснати.Програмата да заделя необходимата динамична памет за низовете.

 

Трябва ми кода и блок-схема на алгоритъма (поне едно от двете).Ако някои може да ми помогне ще съм му изключително благодарен.

Link to comment
Сподели другаде

Здравейте имам проблем с една програма която ми е доста важна.

 

Да се напише програма,която въвежда символен низ с максимална дължина L.Да се състави нов стринг,в който всеки символ от ниския регистър е обърнат в символ от висок регистър и обратно,а празните интервали са пропуснати.Програмата да заделя необходимата динамична памет за низовете.

 

Трябва ми кода и блок-схема на алгоритъма (поне едно от двете).Ако някои може да ми помогне ще съм му изключително благодарен.

:offtopic:

И на 100 места да го пуснеш като коментар, еднаква помощ ще получиш... изтрих ти другите два :)

Link to comment
Сподели другаде

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гост
Отговори на тази тема

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   Не можете да качите директно снимка. Качете или добавете изображението от линк (URL)

Loading...
×
×
  • Създай ново...