Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

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

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

 

моля, помогнете за поправка на програма на С++

Featured Replies

1. Текст на програмата:

Да се напишс програма на C++, която въвежда от клавиатурата трите имена, номера в класа и оценките по 4 учебни предмета на ученици от три класа /не повече от 30 вьв всеки/ и ги съхранява в масиви kll. kl2 и k 13 от структури. Програмата да изчисли средния успех на всеки от учениците, да подреди масивите с учениците по успех. като първи с ученикът с най-висок успех и да изведе получените масиви на екрана в табличен вид и да има поне три подпрограми. програмата да съдържа и подпрограми. които записват и четат информацията от файла.

2. Обяснителна записка:

Програмата започва с дефиниране на структурата, която ползваме, след което чрез функцията input се въвеждат данните за учениците. Функциите zapis и chetene служат за записването и четенето на данни от файл.

В четвъртата функция се изчислява бала на всеки ученик като стойността се записва каго елемент от структурата към всеки един ученик. В следващата функция сс сортират масивите по успех като първи е ученикът с най-висок успех. Сортирапето е no мегода на мехурчето, чийто готов сорс съм изпозвал.

Последната функция е за извеждането на масивите, като чрез оператора '\t' се задава извеждането да crane в табличен вид.

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

3. Текст на програмата:

#include <iostream.h> #include <fstream.h>

struct student

{

char name[20];

char sname[20];

char family[20];

int num;

float mat,bg,angl,fiz,ball;

}kll[30],kl2[30],kl3[30];

void input(student kll [30],int n)

{int i;

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

{cout<<"Nomer:"; cin>>k11.num;

cout<<"Ime: "; cin>>kll .name;

cout<<"Prezime:"; cin>>k11.sname;

cout<<"F'amilia: "; cin>>kl1.family:

do{cout<<"Ocenka po Bylgarski ezik: "; cin>>kll.bg;

}while(kil.bg<2||kll.bg>6);

do{cout<<"Ocenka po Matematika:": cin >>kll.mat;

}wlnle (kll .mat<2|| kll.mat>6);

do;cout< "Ocenka ot Angliiski ezik: "; cin>>kll.angl;

}while (kll.angl<2|| kll.angl>6);

do [cout< "Ocenka ot Fizika izpit: "; cin>>kll.fiz;

}while (kll.fiz<2|| kit.fiz>6>;

cout <<’\n’;}}

void zapis(int n,student kl1 [30])

{int i;

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

{ofstream fp;

fp.open("Danni.dat", ios::app);

fp <<kl1.num<<" "<<kl1.name<<" "<<kl1.sname<<" "<<kl1.family<<" "<<kll .bg<<" "<<kll.mat<<" "<<kll.angl<<" "<<kl1.fiz<<'\n';

fp.close( );}}

void chetene(int n.student kl1[30])

{int i:

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

{ifstream fpl("Danni.dat".ios::in);

fpl>>kl1.num>>kl1.name>>k1l.sname>>kl1.family>>kll.bg>>kl1.mat>>kl1.angl>>kll.fiz;

fpl.close( );}}

void ball(student kll [30],int n)

{int i;

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

{kll.bal=(kll.bg+kll.mat+kll.angl+kll.fiz)/4;}}

void sort(student kll[30],int n)

{in i,j;

float x;

for(i=0;i<n-l;i++)

{for(j=n-1 ;j>i;j--)

{if(kll.ball>kl1[j-1].ball)

{x =k11[j].ball;

k11[j].ball=k11[j-1].ball;

kl1[|j-l].ball=x;

}}}}

void output(student kll[30],int n)

{int i,

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

{cout<<kll.ball<<'\t';}

void zapis(studenl kll[30],int n)

{int i;

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

{ofstream fp;

fp.open("Danni.dat", ios::app);

fp<<kll.num<<" "<<kll.name<<" "<<kll.sname<<" "<<kll.family<<" "<<kll.bg<<" "<<kll,mat<<" "<<kll.angl<<" "<<kll.fiz<<" "<<kll[30].ball<<'\n';

fp.closef( );}

}

void chetene(student kll[30], int n)

{int i:

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

{ifstream fpl("Danni.dat".ios::in);

fpl>>k11.num>>k1l.name>>k11.sname>>kl1.farnily>>kll.bg>>kll.rnat>>kll.angl>>kll.ftz>>kll[30].ball;

fpl.close( );}}

void main()

{int n;

do{cout<<"Vyvedete broq u4enici:";cin>>n;} while (n<0||n>30);

cout<<'\n';

cout<<"Za masiva KLl:\n";

input(kll.n);

cout<<'\n';

cout<<"Za masiva KL2:\n";

input(k12,n);

cout<<'\n';

cout<<"Za masiva KL3:\n";

input(kl3,n):

ball(k11,n);

ball(kl2,n);

ball(kl3,n):

sort(k11,n);

sort(k12,n);

sort(kl3,n);

cout<<"Sortiraniq masiv KLl e:\n";

output(kll,n);

cout<<'\n';

cout<<"Sortiraniq masiv KL2 e:\n";

output(kl2,n);

cout<<'\n';

cout<<"Sortiraniq masiv KL,3 c:\n":

output(kl3,n);

cout<<'\n';

zapis(kll.n);

chetene(kll,n);

zapis(k12,n);

chetene(k12,n);

zapis(k13,n);

chctene(kl3,n);}

Тази програма трябва да се поправи да сортира и извежда масивите не само по полето ball/балообразуваща оценка/ а и имената на учениците.

леле, леле, какво става тука biggrin.gif Значи няма нужда да правииш по 3 подпрограми за всеки клас. Идеята на ППГ е да извършва често срещано и повтарящо се действие. Т.е. с една ППГ можеш да въвеждаш студентите, с друга да извеждаш. Давам ти решението за въвеждане, сортиране и извеждане на един клас и предполагам, че ще можеш да се оправиш и да си въведеш другите 2. За четенето и записа в двоични файлове някой друг ще трябва да ти помогне, тъй като аз поне не успях да се справя :huh:

#include <iostream>

using namespace std;


struct student {

	char   fname[20];

	char   sname[20];

	char   lname[20];

	int	num;

	double mat, bg, angl, fiz, bal;

};


typedef student array_students[30];


void input(array_students a, int br);

void output(array_students a, int br);

void sort(array_students a, int br);


int main(){

	array_students kl1; int n;

	do{

		cout<<"Vyvedete broq u4enici:"; cin>>n;

	}while (n < 0 || n > 30); cin.ignore();

	input(kl1, n);

	sort(kl1, n);

	output(kl1, n);


}



void input(array_students a, int br){

	double pom = 0;

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

		cout<<"Ime: "; cin.getline(a[i].fname, 20);

		cout<<"Prezime: "; cin.getline(a[i].sname, 20);

		cout<<"Familia: "; cin.getline(a[i].lname, 20);

		do{

			cout<<"Ocenka po Bylgarski ezik: "; cin>>a[i].bg;

		}while(a[i].bg < 2 || a[i].bg > 6);

		do{

			cout<<"Ocenka po Matematika:"; cin >>a[i].mat;

		}while (a[i].mat < 2 || a[i].mat > 6);

		do{

			cout<<"Ocenka ot Angliiski ezik: "; cin>>a[i].angl;

		}while (a[i].angl < 2 || a[i].angl > 6);

		do {

			cout<<"Ocenka ot Fizika izpit: "; cin>>a[i].fiz;

		}while (a[i].fiz < 2 || a[i].fiz > 6);

		pom = a[i].mat + a[i].bg + a[i].angl + a[i].fiz;

		a[i].bal = pom / 4;

		cin.ignore();

	}


}


void output(array_students a, int br){

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

		cout<<a[i].bal<<"\t";

}


void sort(array_students a, int br){

	student xind;

	int	 ind;


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

		xind = a[i];

		ind  = i;

		for(int j = i + 1; j < br; j++)

			if(xind.bal < a[j].bal){

				xind = a[j];

				ind  = j;

			}

		a[ind] = a[i];

		a[i]   = xind;

	}

}

Редактирано от kanar4e (преглед на промените)

Регистрирайте се или влезете в профила си за да коментирате

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

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

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.