Премини към съдържанието
  • Добре дошли!

    Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

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

     

задача по информатика -много малко помощ ми трябва


Препоръчан отговор

задачата е следната: ...въвежда 5 оценки на учениците от 11 клас. Да се изведе средния успех. Да се направи меню. ;)

Добре до тук съм е направил. Ето го и кода kоито си работи перфектно, има си меню и пресмята средния успех. Можете да го пуснете на Borland C++

това което не мога да на правя е да ми извежда броя отличници(с оценки над 5.50)броя слаби ученици(под 3.50) и този с най-много отсъствия

трите нови функции да виждат в ненюто най-горе като 4 5 и 6(менюто което се вижда като се пусне задачата) :) ако може някои добър човек да ми помогне ще съм му много благодарен Aко може кода с които трябва да допълня и къде да го вмъкна. Благодаря предварително, знам че има умни хора тука. :)

#include<iostream.h>

#include<string.h>

struct Students

{

char name[30];

int mark[5];

int missing;

};

double *Sr;

void Vhod(Students st[],int n)

{char x[3]; 

for(int i=0;i<n;i++)

{

cout<<"vavedi ime na u4enik";

cin.getline(st[i].name,29);

//cin.getline(x,2);

for(int j=0;j<5;j++)

{cout<<"vavedi 5 ocenki";

cin>>st[i].mark[j];

}

cout<<"vavedi otsastviq";

cin>>st[i].missing;

cin.getline(x,2);

}

}





void Izhod(Students st[],int n)

{

for (int i=0;i<n;i++)

{

cout<<st[i].name;

for(int j=0;j<5;j++)

cout<<st[i].mark[j]<<" ";

cout<<st[i].missing<<endl;

}

}

double Sr_uspeh(Students st[],int n)

{

double Sr=0;

for(int i=0;i<n;i++)

for(int j=0;j<5;j++)

Sr=Sr+st[i].mark[j];

return Sr/(5*n);

}

int main()

{

Students st[13];


int n,choice;

char ans='y',x[3];

cout<<"Vavedi br ue4inici";

cin>>n;

cout<<"izbor 1-vhod  2-izhod  3-sreden uspeh";

cin>>choice;

do

{

switch(choice)

{

case 1:cin.getline(x,2);Vhod(st,n);break;

case 2:Izhod(st,n);break;

case 3:cout<<"sreden uspeh"<<Sr_uspeh(st,n)<<endl;break;

//case 4:;

//case 5:;

//case 6:;

default:cout<<"nekorekten izbor";

}

cout<<"6te prodalzite li(y/n)";cin>>ans;

if(ans=='y'){cout<<endl<<"vavedi izbor na funkciq";cin>>choice;}

}

while(ans!='n');



return 0;

}

моля ви наистина спешно ми трябва плс плс плс

Редактирано от ventseslav8 (преглед на промените)
Линк към коментара
Сподели в други сайтове

Толкова трудно ли е със един for() да обходиш структурата, като предварително създадеш няколко работни променливи, които ще пазят броя на отличниците, двойкаджиите и шарлатаните?

/* Piece of C-code */

.

.

.

unsigned good_students = 0, poor_students = 0, blade_runner = 0;

unsigned minMissings = 0;


for(i=0; i<=maxStudents; i++) {


    if(student[i].rating >= 5.50) good_students++;

    else if(student[i].rating <= 3.50) poor_students++;


    if(student[i].missing > minMissings) {

        minMisings = student[i].missing;

        blade_runner = i;

    }

}

    printf("Number of good students: %d\n", good_students);

    printf("Number of poor students: %d\n", poor_students);

    printf("The blade runner name is: %s", student[blade_runner].name);

.

.

.

// not tested

Редактирано от krisku (преглед на промените)
Линк към коментара
Сподели в други сайтове

Толкова трудно ли е със един for() да обходиш структурата, като предварително създадеш няколко работни променливи, които ще пазят броя на отличниците, двойкаджиите и шарлатаните?

/* Piece of C-code */

.

.

.

unsigned good_students = 0, poor_students = 0, blade_runner = 0;

unsigned minMissings = 0;


for(i=0; i<=maxStudents; i++) {


    if(student[i].rating >= 5.50) good_students++;

    else if(student[i].rating <= 3.50) poor_students++;


    if(student[i].missing > minMissings) {

        minMisings = student[i].missing;

        blade_runner = i;

    }

}

    printf("Number of good students: %d\n", good_students);

    printf("Number of poor students: %d\n", poor_students);

    printf("The blade runner name is: %s", student[blade_runner].name);

.

.

.
// not tested
Добре вмъквам го в задачата по този начин:
#include<iostream.h>

#include<string.h>

struct Students

{

char name[30];

int mark[5];

int missing;

};

double *Sr;

void Vhod(Students st[],int n)

{char x[3]; 

for(int i=0;i<n;i++)

{

cout<<"vavedi ime na u4enik";

cin.getline(st[i].name,29);

//cin.getline(x,2);

for(int j=0;j<5;j++)

{cout<<"vavedi 5 ocenki";

cin>>st[i].mark[j];

}

cout<<"vavedi otsastviq";

cin>>st[i].missing;

cin.getline(x,2);

}
















unsigned good_students = 0, poor_students = 0, blade_runner = 0;

unsigned minMissings = 0;


for(i=0; i<=n; i++) {


    if(student[i].rating >= 5.50) good_students++;

    else if(student[i].rating <= 3.50) poor_students++;


    if(student[i].missing > minMissings) {

        minMisings = student[i].missing;

        blade_runner = i;

    }

}











}





void Izhod(Students st[],int n)

{

for (int i=0;i<n;i++)

{

cout<<st[i].name;

for(int j=0;j<5;j++)

cout<<st[i].mark[j]<<" ";

cout<<st[i].missing<<endl;

}

}

double Sr_uspeh(Students st[],int n)

{

double Sr=0;

for(int i=0;i<n;i++)

for(int j=0;j<5;j++)

Sr=Sr+st[i].mark[j];

return Sr/(5*n);

}

int main()

{

Students st[13];


int n,choice;

char ans='y',x[3];

cout<<"Vavedi br ue4inici";

cin>>n;

cout<<"izbor 1-vhod  2-izhod  3-sreden uspeh";

cin>>choice;

do

{

switch(choice)

{

case 1:cin.getline(x,2);Vhod(st,n);break;

case 2:Izhod(st,n);break;

case 3:cout<<"sreden uspeh"<<Sr_uspeh(st,n)<<endl;break;








case 4:cout<<"otli4nicite sa "<<good_students;break;

case 5:cout<<"s nai nisak usp "<<poor_students;break;

case 6:cout<<"s na mnogo otsastviq "<<blade_runner;break;















default:cout<<"nekorekten izbor";

}

cout<<"6te prodalzite li(y/n)";cin>>ans;

if(ans=='y'){cout<<endl<<"vavedi izbor na funkciq";cin>>choice;}

}

while(ans!='n');



return 0;

}

явно някъде греша защото ми дава 5 грешки а с моите знания(наистина малки) немога да ги поправя.

направо се отчаях с тази задача, какви ли не алгоритми пробвах, по никакав начин не мога да ги вмакна в задачата така че да работи правилно

Линк към коментара
Сподели в други сайтове

Ето ти готовото решение с малко подобрения по менюто и добавени редица проверки за грешки. Тествай и остава да почерпиш. Това се компилира и работи с GCC на MacOS. Нямам Уиндоус за да тествам копилатора на Борланд.


#include <iostream>

#include <string>


using namespace std;


typedef struct Students

{

	char name[30];	// ime

	int mark[5];	// ocenki

	int missing;	// otsustwiq

	double rating;	// sreden uspeh

}Students;


unsigned good_students = 0, poor_students = 0, blade_runner = 0;


void Vhod(Students st[], int n)

{

	char x[3];

	int loop = 0;

	int score;


	for(int i = 0; i < n; i++) {

		cout << "vavedi ime na u4enik";

		cin.getline(st[i].name, 29);

		loop = 0;


		while (loop < 5) {			

			cout << "vavedi ocenka";

			cin >> score;

			if ((score >= 2) && (score <= 6)) {

				st[i].mark[loop] = score;

				loop++;

			}

		}

		cout << "vavedi otsastviq";

		cin >> st[i].missing;

		cin.getline(x, 2);

	}

}


void calcStatistics(Students *st, int n)

{

	unsigned minMissings = 0;

	good_students = 0; 

	poor_students = 0; 

	blade_runner = 0;


	for(int i = 0; i < n; i++) {


		if(st->rating >= 5.50) {

			good_students++;

		}

		else if(st->rating <= 3.50) {

			poor_students++;

		}


		if(st->missing > minMissings) {

			minMissings = st->missing;

			blade_runner = i;

		}

		st++;

	}

}



void Izhod(Students st[], int n)

{

	for (int i=0;i<n;i++)

	{

		cout << st[i].name;

		for(int j = 0; j < 5; j++)

			cout << st[i].mark[j] <<" ";

		cout << st[i].missing << endl;

	}

}


double Sr_uspeh(Students *st, int n)

{

	double Sr = 0;	//sreden uspeh za wsi4ki u4enici

	double st_sr = 0; // sreden uspeh za edin u4enik


	for(int i = 0; i < n; i++) {

		for(int j = 0; j < 5; j++) {

			st_sr += st->mark[j];		// sum all student's marks

		}

		Sr += st_sr;

		st->rating = (double)(st_sr/5);	// mean score for a student

		st++;

		st_sr = 0;

	}

	return Sr/(5*n);

}


void printMenu()

{

	cout << "1 -> vhod " << endl;

	cout << "2 -> izhod " << endl;

	cout << "3 -> sreden uspeh" << endl;

	cout << "4 -> otlichnici" << endl;

	cout << "5 -> slabi uchenici" << endl;

	cout << "6 -> Otsustwiq" << endl;

	cout << "h -> help" << endl;

	cout << "x -> exit" << endl;

}


int main()

{	

	Students st[13];

	int n;

	char choice;

	char x[3];


	cout << "Vavedi br ue4inici";

	cin >> n;

	if ((n < 0) || (n >= 13)) {

		cout << "Number of students enterred is invalid. Goodbye!" << endl;

		exit(1);

	}


	do

	{

		printMenu();

		cin.clear();

		cin >> choice;


		switch(choice)

		{

			case '1':

				cin.getline(x,2);

				Vhod(st,n);

				break;

			case '2':

				Izhod(st,n);

				break;

			case '3':

				cout << "sreden uspeh " << Sr_uspeh(st,n) << endl;

				break;

			case '4':

				Sr_uspeh(st,n);

				calcStatistics(st, n);

				cout << "otli4nicite sa " << good_students << endl;

				break;

			case '5':

				Sr_uspeh(st,n);

				calcStatistics(st, n);

				cout << "s nisak usp " << poor_students << endl;

				break;

			case '6':

				Sr_uspeh(st,n);

				calcStatistics(st, n);

				cout << "s na mnogo otsastviq - " << st[blade_runner].missing << " e " << st[blade_runner].name << endl;

				break;

			case 'x':

				exit(0);

			case 'h': 

			default:

				printMenu();

				break;

		}

	}

	while(1);



	return 0;

}

Линк към коментара
Сподели в други сайтове

Добавете отговор

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

Гост
Напишете отговор в тази тема...

×   Вмъкнахте текст, който съдържа форматиране.   Премахни форматирането на текста

  Разрешени са само 75 емотикони.

×   Съдържанието от линка беше вградено автоматично.   Премахни съдържанието и покажи само линк

×   Съдържанието, което сте написали преди беше възстановено..   Изтрий всичко

×   You cannot paste images directly. Upload or insert images from URL.

  • Разглеждащи това в момента   0 потребители

    • Няма регистрирани потребители разглеждащи тази страница.
×
×
  • Добави ново...

Информация

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