Премини към съдържанието

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


Цяла седмица се опитвам да си завърша курсовата задача по програмиране. Последния срок е утре до 17:00 а съм до никъде. Надробих някакви простотии но не вярвам да ми донесат каквото и да е... Бих бил много благодарен на всякаква помощ.

Ето го и условието:
Съставете програма с функция main() и избор чрез меню на функции за:
- въвеждане от клавиатура данните на К студента (К<=25) от група: фак.номер, оценки по 4 дисциплини от зимен семестър, възраст и съхраняването им в масив GR(25,6) като (GR(I,0) - за фак. номер, (GR(I,1) до (GR(I,4) - за оценка, (GR(I,5) за възраст.
- изчисляване и извеждане на среден успех по избрана дисциплина; 
- изчисляване и извеждане на среден успех на студент по зададен фак. номер;
- намиране и извеждане на броя на студентите над зададена възраст
- извеждане на екран съдържанието на масива със съответни текст и формати. 

Когато видите състоянието на кода ми ще се разберете защо публикувам тема.Ако не друго - поне ще се посмеете 

Ето го и него:

#include <iostream>
#include <string>
using namespace std;

int input(int x[]);
int add(int a);
void studentID(int a);



int main()
{
	int ch, GR[25][6], n;
	do {
		cout << "\Show student data: \n";
		cout << "\Show GPA for subject : \n";
		cout << "\Show GPA for a FN: \n";
		cout << "\Show amount of students over the age of 18: \n";
		cout << "\Exit";

		do {
			cout << "\n\nChoice: \n";
			cin >> ch;
		}
	}

	int input(int x[])
		 {
		int i, n = 0;
		do {
			cout << "\n Input size: ";
			cin >> n;
		} while (1 > n || n > 25);
		for (int i = 0; i < n; i++)
		{
			cout << "\n Enter element [" << i + 1 << "] = ";
			cin >> x[i];
		}
		return n;
	}

	int add(int a) {
		char iz;

		while (1) {
			cout << "Insert ID:";
			cin >> rab[a].id;
			cout << "Insert grade1:";
			cin >> rab[a].g1;
			cout << "Insert grade2:";
			cin >> rab[a].gr2;
			cout << "Insert grade3:";
			cin >> rab[a].gr3;
			cout << "Insert grade4:";
			cin >> rab[a].gr4;
			cout << "Insert age:";
			cin >> rab[a].age;
			a++;
			cout << endl << "Do you want to add a new student?" << endl << "type (y) for yes and (n) for no:";
			cin >> iz;
			if (iz == 'n') {
				return a;
				break;
			}
			return 0;
		}
		}
	void studentID(int a) {
		char ID[5];
		//      cout<<a;
		cout << "Insert ID:";
		cin >> studentID;
		for (int i = 0; i<a; i++)
			if (!strcmp(studentID, rab[i].studentID)) {
				cout << "Name:" << rab[i].name << endl << "ID:" << rab[i].id << endl << "Age:" << rab[i].god << endl;
			}
		return;
	}

Намерих същата задача във форума ви но е решена без функции а по следния начин:

#include <iostream>

using namespace std;

int main()
{
    int K=0;
    int choice=0;

    cout << "Vivedete broq na studentite(1-25): ";
    cin >> K;

    double GR[K][6];

    for(int i=0; i<K; ++i)
	    for(int j=0; j<6; ++j)
	    {
		    cout << "GR("<<i<<","<<j<<") = ";
		    cin >> GR[i][j];
	    }

    do
    {
	    cout << "1. Izchislqvane i izvejdane na sredniq uspeh po izbrana disiplina" << endl;
	    cout << "2. Izchislqvane i izvejdane na sredniq uspeh na student po dazaden vakulteten nomer" << endl;
	    cout << "3. Namirane i izvejdane na broq na studentite nad zadadena vizrast." << endl;
	    cout << "4. Izvejdane na ekrana sidirjanieto na masiwa sys siotvetniq tekst i formati." << endl;

	    cout << "Molq, izberete obciq(1-4): ";
	    cin >> choice;
    }while(choice>4 || choice<1);


    if(choice == 1)
    {
	    int disiplina=0;
	    double srUspeh=0;

	    cout << "Izberete disiplina(1-4): ";
	    cin >> disiplina;
	    if(disiplina > 5 || disiplina < 1) cout << "Greshen vhod!" << endl;

	    for(int i=0; i<K; ++i)
		    srUspeh+=GR[i][disiplina];

	    cout << "Sredniq uspeh po disiplina " << disiplina << " e : " << srUspeh/K << endl;

    }

    else if(choice == 2)
    {
	    int FKNomer=0;
	    bool isFound=false;
	    double srUspeh=0;

	    cout << "FK Nomer: "; cin >> FKNomer;

	    for(int i=0; i<K; ++i)
	    {
		    if(GR[i][0] == FKNomer)
		    {
			    for(int j=1; j<5; ++j) srUspeh += GR[i][j];
			    isFound = true;
			    break;
		    }

	    }


	    if(isFound == false) cout << "Ne e nameren student s takiv FK nomer!" << endl;

	    else if(isFound) cout << "Sredniq uspeh na student s FK=" << FKNomer << " e : " << srUspeh/4 << endl;
    }

    else if(choice == 3)
    {
	    int vizrast, br=0;
	    cout << "Vivedete vizrast: ";
	    cin >> vizrast;

	    for(int i=0; i<K; ++i)
	    {
		    if(GR[i][5] > vizrast)
		    {
			    br++;
		    }
	    }

	    cout << "Broq na studentite, koito sa po-golemi ot " <<vizrast << " godini: " << br << endl;
    }

    else if(choice == 4)
    {
	    for(int i=0; i<K; ++i)
	    {
		    cout << "Student " << i+1 << endl;
		    cout << "Fak. Nomer: " << GR[i][0] << endl;
		    cout << "Otsenki: " << GR[i][1] << " " << GR[i][2] <<" "<< GR[i][3] <<" "<<GR[i][4] << endl;
		    cout << "Vizrast: " << GR[i][5] << endl;
	    }

    }

    return 0;
}

Не мисля че това е целта на задачата, така че едва ли ще бъде приета за вярна. 

Сподели този отговор


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

Не ми се чете кода ти, но ти трябва двумерен масив и след това да го обходиш с цикли, за да можеш останалите условия да ги изпълниш. Изключително трудно е да четеш чужд код с чужди променливи и да вникваш в смисъла и ума на автора му.

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

Сподели този отговор


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

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

тоест 2рия код е неправилен?

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
току-що, blodwenn написа:

тоест 2рия код е неправилен?

А ти пробвал ли си да го компилираш или аз трябва сега да пускам коде блокса и да умувам над грешките?

Сподели този отговор


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

А ти пробвал ли си да го компилираш или аз трябва сега да пускам коде блокса и да умувам над грешките?

пробвах, но във 2рия код не виждам да са използвани функции, съжалявам ако те притеснявам и виждам че не ти се занимава ( не е и нужно) , но наистина се мъча от много време и бих бил адски благодарен ако му хвърлиш едно око.

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

Сподели този отговор


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

Не можеш да пишеш DO където си поискаш. В C++ цикълът е Do...While. Въобще в първата част не виждам какви са тия Do-та едно под друго, без while. Do..while означава "изпълни, докато условието е валидно".
Освен всичко това, за да може да е  валидно, необходимо е да се изкарат променливите като глобални. Променливите в C++, декларирани вътре във функцията имат обхват на действие само функцията, те са локални.
Декларирал си един масив GR и си решил след това да го достъпваш в друга функция - еми няма да стане. Тоя масив е извън обхвата на функцията. Или задаваш глобално или използваш параметри.
Втората задача е вярна, в твоята си допуснал грешки. Честно казано, ще е по-лесно някой от колегите във форума да ти я пренапише, отколкото да я редактираме. Иначе браво, че си се опитал да направиш нещо.

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

Сподели този отговор


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

Не можеш да пишеш DO където си поискаш. В C++ цикълът е Do...While. Въобще в първата част не виждам какви са тия Do-та едно под друго, без while. Do..while означава "изпълни, докато условието е валидно".
Освен всичко това, за да може да е  валидно, необходимо е да се изкарат променливите като глобални. Променливите в C++, декларирани вътре във функцията имат обхват на действие само функцията, те са локални.
Втората задача е вярна, в твоята си допуснал грешки. Честно казано, ще е по-лесно някой от колегите във форума да ти я пренапише, отколкото да я редактираме. Иначе браво, че си се опитал да направиш нещо.

Благодаря ти че отдели време. Във втората задача обаче условието " Съставете програма с функция main() и избор чрез меню на функции за: " е неизпълнено, или аз греша?

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

Сподели този отговор


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

Благодаря ти че отдели време. Във втората задача обаче условието " Съставете програма с функция main() и избор чрез меню на функции за: " е неизпълнено, или аз греша?

Условието във вторият код не е изпълнено. Понеже няма условие как трябва да декларираш променливите, аз бих декларирал масива като глобална променлива след include-тата. Това е малко тарикатско, но щом може - що да не може?
(По принцип не е хубаво да се декларира глобално, защото докато локалните променливи се освобождават от паметта, то глобалната стои през цялото време там. С динамичната памет е още по-голям сеир. Няма garbage collector и я чистиш на ръка. Това за обща информация, не те интересува.)
Аз твоята програма я виждам с MAIN, един case switch метод, който извиква функциите, които си описал след main функцията с параметър. Най-тарикатско е глобално да зададеш масива.

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

Сподели този отговор


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

Работата е там че програмирането ми е слабост (както сам можеш да се убедиш :D ) и едва ли ще създам нещо по-вярно от 2рия вариант, колкото и да се опитвам, особено за времето с което разполагам. Ако някой от колегите във форума не се смили да я напише (което ме съмнява понеже са ми казвали че е лесна но адски досадна за писане програма) , сигурно ще се пробвам с втория вариант, дори и неизпълняващ точно условието пак е в по-верен от кашата която съм надробил :/ 

Сподели този отговор


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

Работата е там че програмирането ми е слабост (както сам можеш да се убедиш  ) и едва ли ще създам нещо по-вярно от 2рия вариант, колкото и да се опитвам, особено за времето с което разполагам.

Човек, аз ти казах как да я направиш.
В MAIN - един case, където избираш какво да правиш - коя функция да извикаш
След това описваш функция за вмъкване в масива и останалите функции. Среден успех-ала-бала става с цикли да го обходиш.
Аз в момента съм на вълна Javascript. И не, и аз НЕ обичам програмирането. Не си сам.
Преди да пишеш, представи си как трябва да изглежда програмата като разположение. Аз ти казвам разположението. Циклите ги имаш във вторият код. Можеш да използваш части от него, като си ги адаптираш.
Аз сега малко пиша от телефона и ми е доста трудно да се хвана да пиша код.

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

Сподели този отговор


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

Човек, аз ти казах как да я направиш.
В MAIN - един case, където избираш какво да правиш - коя функция да извикаш
След това описваш функция за вмъкване в масива и останалите функции. Среден успех-ала-бала става с цикли да го обходиш.
Аз в момента съм на вълна Javascript. И не, и аз НЕ обичам програмирането. Не си сам.
Преди да пишеш, представи си как трябва да изглежда програмата като разположение. Аз ти казвам разположението. Циклите ги имаш във вторият код. Можеш да използваш части от него, като си ги адаптираш.

Ще опитам но шанса за успех не е обнадеждаващ, липсват ми фундаментални знания и имам големи пропуски , които трябва да запълня ако искам да се справям сам за в бъдеще.Иначе ти благодаря, искрено, за помощта - не беше длъжен.

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

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 1 час, simtech написа:

 

Пробвах се но напълно се оплетох, просто съм кръгла нула с това програмиране. Наистина ми е неудобно да тя моля но ако не отнема много време може ли да се пробваш? Под "много" имам предвид над 10-15 минутки. Ако е нещо сложно не се занимавай

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

Сподели този отговор


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

Пробвах се но напълно се оплетох, просто съм кръгла нула с това програмиране. Наистина ми е неудобно да тя моля но ако не отнема много време може ли да се пробваш? Под "много" имам предвид над 10-15 минутки

Написал съм ти структурата - MAIN-а, case-а, временна променлива, cin. Циклите със сигурност ще ми отнемат повече от 10 минути мислене, а и не знам какво точно сте учили и кой курс си въобще, да знам какво мога да използвам. Динамична памет взимали ли сте, освен масиви нещо друго?
 

#include <iostream>
#include <cstdlib>
using namespace std;

int GR[25][6];

int addstudent()
{

}
int avgcource()
{

}
int avgfn()
{

}
int studover()
{

}
int showarray()
{

}

int main()
{
    int select;
    cout<<"1. Vuvedi nov student\n";
    cout<<"2. Sreden uspeh na kursa\n";
    cout<<"3. Sreden uspeh po fakulteten nomer\n";
    cout<<"4. Broi studenti nad X vuzrast\n";
    cout<<"5. Izvejdane na dvumerniqt masiv\n";
    cout<<"Vivedete svoqt izbor i potvurdete s Enter\n";
    cin>>select;
    switch(select)
    {
case 1:
    addstudent();
    break;
case 2:
    avgcource();
    break;
case 3:
    avgfn();
    break;
case 4:
    studover();
    break;
case 5:
    showarray();
    break;
    }
}

 

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

Сподели този отговор


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

Написал съм ти структурата - MAIN-а, case-а, временна променлива, cin. Циклите със сигурност ще ми отнемат повече от 10 минути мислене, а и не знам какво точно сте учили и кой курс си въобще, да знам какво мога да използвам. Динамична памет взимали ли сте, освен масиви нещо друго?
 

 

Благодаря ти много. Наистина оценявам отделеното време. Учили сме функции,масиви и символни низове, указатели,оператори,цикли. 1ви курс съм.

"По-добре е да не използваме глобални променливи" - бележка от доцента

 

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

Сподели този отговор


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

Благодаря ти много. Наистина оценявам отделеното време. Учили сме функции,масиви,оператори,цикли. 1ви курс съм.

"По-добре е да не използваме глобални променливи" - бележка от доцента

Добре, искат ви поименно да ги вкарвате, с цикъл да ги вкарвате или как? Има много голямо значение какво може да се ползва за реализирането на задачата. И да, глобални променливи не е много хубаво, но е най-лесно.
Вектори учили ли сте?

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

Сподели този отговор


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

не сме, мога да ти покажа код на мой колега:

 

#include <iostream>
#include <conio.h>

using namespace std;

char ms[80];
int N, i;

int menu();
void vavejdane();
void proizvedenie();
void sredno();
void maksimalna();
void opredelqnec();
void opredelqneb();
void izvejdanemasiv();

int main()
{
	int choice;
	do
	{
		choice = menu(); //Na choice postavqme stoinostta vurnata ot menu

		switch (choice)
		{
		case 1: vavejdane(); break;
		case 2: proizvedenie(); break;
		case 3: sredno(); break;
		case 4: maksimalna(); break;
		case 5: opredelqnec(); break;
		case 6: opredelqneb(); break;
		case 0: cout << "Natisnete proizvolen buton za izhod\n"; break;
		case 7: izvejdanemasiv(); proizvedenie(); break;
		case 8: izvejdanemasiv(); sredno(); break;
		case 9: izvejdanemasiv(); maksimalna(); break;
		case 10: izvejdanemasiv(); opredelqnec(); break;
		case 11: izvejdanemasiv(); opredelqneb(); break;
		default: cout << "\nNqma takava opciq\a\n";
		}
	} while (choice != 0);

	getch();
}



int menu()
{
	int izbor;
	cout << "----------MENU----------\n";
	cout << "1.Vavejdane ot klaviatura do 80 simvola(bukvi ili cifri)\n";
	cout << "2.Proizvedenieto ot cifrite sus stoinost po-golqma  ot 5 v masiva\n";
	cout << "3.Izchislqvane na sredno-aritmetichnoto ot cifrite v masiva\n";
	cout << "4.Namirane na maksimalna cifra v masiva i neiniq poreden nomer\n";
	cout << "5.Opredelqne broq na vsqka ot cifrite sus stoinost ot 0 do 9\n";
	cout << "6.Opredelqne broq na glavnite bukvi v masiva\n";
	cout << "7.Rezultatut ot 2. s izvejdane na purvonachalniq masiv.\n";
	cout << "8.Rezultatut ot 3. s izvejdane na purvonachalniq masiv.\n";
	cout << "9.Rezultatut ot 4. s izvejdane na purvonachalniq masiv.\n";
	cout << "10.Rezultatut ot 5. s izvejdane na purvonachalniq masiv.\n";
	cout << "11.Rezultaut ot 6. s izvejdane na purvonachalniq masiv.\n";
	cout << "0.Izhod ot programata\n";
	cout << "Izbor:";
	cin >> izbor;
	return izbor;
}

//Funkciq za vuvejdane do 80 simvola(bukvi i cifri) v simvolen masiv CH(80) s proverka za korektnost

void vavejdane()
{
	cout << "Vavedete broq na simvolite(1..80): "; cin >> N;
	do
	{
		if (N<1)
		{
			cout << "Nevalidna stoinost. Molq vuvedete nova stoinost, koqta e po-golqma ili ravna na 1. Nova stoinost:";
			cin >> N;
		}
		if (N>80)
		{
			cout << "Nevalidna stoinost. Molq vuvedete nova stoinost, koqto e po-malka ili ravna na 80. Nova stoinost:";
			cin >> N;
		}
	} while (N<1 || N>80);
	cout << endl << "Vavedete simvolite: ";
	cin >> ms;
	cout << endl;
}

void proizvedenie()
{
	bool exist = false;
	int pr = 1, i;
	for (i = 0; i<N; i++)
		if (ms[i]>'5' && ms[i] <= '9')
		{
			pr *= ms[i] - '0'; exist = true;
		}
	if (exist)
		cout << "\nProizvedenieto e: " << pr << endl << endl;
	else
		cout << "\nNyama takiva cifri." << endl << endl;
}

void sredno()
{
	int s = 0, c = 0, i;
	for (i = 0; i<N; i++)
		if (ms[i] >= '0' && ms[i] <= '9')
		{
			s += ms[i] - '0'; c++;
		}
	if (c>0)
		cout << "\nSredno aritmetichno na cifrite: " << (float)s / (float)c << endl << endl;
	else
		cout << "\nNyama cifri!" << endl << endl;
}

void maksimalna()
{
	int maxcifr = -1, index = -1, i;
	for (i = 0; i<N; i++)
		if (ms[i] >= '0' && ms[i] <= '9')
			if (ms[i] - '0' > maxcifr)
			{
				maxcifr = ms[i] - '0'; index = i;
			}
	if (index >= 0)
		cout << "\nMaksimalna cifra: " << maxcifr << "\nPoreden nomer: " << index << endl << endl;
	else
		cout << "\nNyama cifri!" << endl << endl;
}

void opredelqnec()
{
	int br[10] = { 0 }, i;
	for (i = 0; i<N; i++)
		if (ms[i] >= '0' && ms[i] <= '9')
			br[ms[i] - '0']++;
	for (i = 0; i<10; i++)
		cout << "\nCifra '" << i << "' se sreshta " << br[i] << " pati";
	cout << endl << endl;
}

void opredelqneb()
{
	int br = 0, i;
	for (i = 0; i<N; i++)
		if (ms[i] >= 'A' && ms[i] <= 'Z')
			br++;
	cout << "\nBroy glavni bukvi: " << br << endl << endl;
}

void izvejdanemasiv()
{
	int i;
	cout << endl;
	for (i = 0; i<N; i++)
		cout << ms[i];
	cout << endl << endl;
}

 

каза ми че май има грешки в менюто и мейна но циклите и функциите трябва да са във този вид

Ето кода на друг колега, неговия работил на 100%:

SUN 2:15AM
#include <iostream>
#include <string>

using namespace std;

int input(int x[]);
int mostoc(int x[], int n);
void masiv2(int n, int x[], int k[]);
void output(int n, int x[], int k[]);
void sort(int count, int x[], int k[]);

int main()
{
	int ch, A[30], B[30], C[30], n;
	do {
		cout << "\n1.Input Number and value of elements: \n";
		cout << "\n2.Show the most occured digit: \n";
		cout << "\n3.New Array with odd and even numbers \n";
		cout << "\n4.New Array with Ascending order  \n";
		cout << "\n5. Exit";
		do {
			cout << "\n\nChoice: \n";
			cin >> ch;
		} while (ch<1 || ch> 5);

		switch (ch)
		{
		case 1:
			n = input(A);
			break;
		case 2:
			cout << "Most occuring number is: " << mostoc(A, n) << endl;
			break;
		case 3:
			masiv2(n, A, B);
			output(n, A, B);
			break;
		case 4:
			sort(n, B, C);
			break;
		}
	} while (ch != 5);
}


int input(int x[])
{
	int i, n = 0;
	cout << "\n Input number of elements from 1 - 30: ";
	do {
		cin >> n;
	} while (n < 1 || n > 30);
	for (i = 0; i < n; i++)
	{
		do {
			cout << "Enter a 3 digit number of element [" << i + 1 << "] = "; cin >> x[i];
		} while (x[i] < 100 || x[i] > 999);
	}
	return n;
}

int mostoc(int x[], int n)
{
	int digits[10] = { 0,0,0,0,0,0,0,0,0,0 }, max_index = 0;
	int n0, n1, n2, last_max = 0;
	for (int i = 0; i < n; i++)
	{
		string number = to_string(x[i]);

		n0 = atoi(number.substr(0, 1).c_str());
		n1 = atoi(number.substr(1, 1).c_str());
		n2 = atoi(number.substr(2, 1).c_str());

		for (int j = 0; j < 10; j++)
		{
			if (n0 == j) digits[j]++;
			if (n1 == j) digits[j]++;
			if (n2 == j) digits[j]++;
		}
	}

	for (int i = 0; i < 10; i++)
	{
		if (last_max < digits[i])
		{
			last_max = i;
		}
	}
	return last_max;
}

void masiv2(int n, int x[], int k[])
{
	int next = 0;
	for (int i = 0; i < n; ++i)
	{
		if (x[i] % 2 == 1)
		{
			k[next] = x[i];
			next++;
		}
	}
	for (int i = 0; i < n; ++i)
	{
		if (x[i] % 2 == 0)
		{
			k[next] = x[i];
			next++;
		}
	}
}



void output(int n, int x[], int k[])
{
	cout << "Array 1: " << endl;
	for (int i = 0; i < n; i++) {
		cout << x[i] << "\n";
	}
	cout << "Array 2: " << endl;;
	for (int i = 0; i < n; i++)
	{
		cout << k[i] << "\n";
	}
}

void sort(int count, int x[], int k[])
{
	for (int i = 0; i < count; ++i)
	{
		k[i] = x[i];
	}

	int last = k[0], tmp;
	for (int i = 1; i < count; ++i)
	{
		for (int j = 0; j < count - 1; ++j)
		{
			if (k[j + 1] < k[j])
			{
				tmp = k[j];
				k[j] = k[j + 1];
				k[j + 1] = tmp;
			}
		}
	}
	for (int i = 0; i < count; i++)
	{
		cout << "Array2: " << "\t" << x[i] << "\t" << " Array3:" << "\t" << k[i] << endl;

	}
}

 

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

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 3 часа, simtech написа:

 

за сега това, само нямам представа как да оправя " Error :  identifier "K" is undefined ".  и   "Error    C2065    'К': undeclared identifier  "

#include <iostream>
#include <cstdlib>
using namespace std;

int GR[К][6];

int addstudent()
{
	cout << "Vivedete broq na studentite(1-25): ";
	cin >> K;

	double GR[K][6];

	for (int i = 0; i<K; ++i)
		for (int j = 0; j<6; ++j)
		{
			cout << "GR(" << i << "," << j << ") = ";
			cin >> GR[i][j];
		}
}
int avgcource()
{
	int disciplina = 0;
	double srUspeh = 0;

	cout << "Izberete disciplina(1-4): ";
	cin >> disciplina;
	if (disciplina > 5 || disciplina < 1) cout << "Greshen vhod!" << endl;

	for (int i = 0; i<K; ++i)
		srUspeh += GR[i][disciplina];

	cout << "Sredniq uspeh po disciplina " << disciplina << " e : " << srUspeh / K << endl;
}
int avgfn()
{
	int FNomer = 0;
	bool isFound = false;
	double srUspeh = 0;

	cout << "FK Nomer: "; cin >> FNomer;

	for (int i = 0; i<K; ++i)
	{
		if (GR[i][0] == FNomer)
		{
			for (int j = 1; j<5; ++j) srUspeh += GR[i][j];
			isFound = true;
			break;
		}
	}


	if (isFound == false) cout << "Ne e nameren student s takiv FK nomer!" << endl;

	else if (isFound) cout << "Sredniq uspeh na student s FN=" << FNomer << " e : " << srUspeh / 4 << endl;
}
int studover()
{
	int vuzrast, br = 0;
	cout << "Vuvedete vuzrast: ";
	cin >> vuzrast;

	for (int i = 0; i<K; ++i)
	{
		if (GR[i][5] > vuzrast)
		{
			br++;
		}
	}

	cout << "Broq na studentite, koito sa nad " << vuzrast << " godini: " << br << endl;
}
int showarray()
{
	{
		for (int i = 0; i<K; ++i)
	{
		cout << "Student " << i + 1 << endl;
		cout << "Fak. Nomer: " << GR[i][0] << endl;
		cout << "Otsenki: " << GR[i][1] << " " << GR[i][2] << " " << GR[i][3] << " " << GR[i][4] << endl;
		cout << "Vizrast: " << GR[i][5] << endl;
	}

}

return 0;
}

int main()
{
	
	int select;
	cout << "1. Nov student\n";
	cout << "2. Sreden uspeh \n";
	cout << "3. Sreden uspeh po fakulteten nomer\n";
	cout << "4. Broi studenti nad opredelena vuzrast\n";
	cout << "5. Izvejdane na dannite\n";
	cout << "Vuvedete svoqt izbor i potvurdete s Enter\n";
	cin >> select;
	switch (select)
	{
	case 1:
		addstudent();
		break;
	case 2:
		avgcource();
		break;
	case 3:
		avgfn();
		break;
	case 4:
		studover();
		break;
	case 5:
		showarray();
		break;
	}
}

 

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

Сподели този отговор


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

Остай, забравих, че трябва да се loop-ва switch-а, за което трябва да се вмести в do-while; Извинявам се за късният отговор.
Отдавна не съм правил подобни неща. За тия работи има вектори, динамични масиви, класове..оффф...Ако беше да ги начаткаш методи на класа....

Сподели този отговор


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

Вектори обаче не помня да сме взимали :eek:

преди 1 минута, simtech написа:

Остай, забравих, че трябва да се loop-ва switch-а, за което трябва да се вмести в do-while; Извинявам се за късният отговор.
Отдавна не съм правил подобни неща. За тия работи има вектори, динамични масиви, класове..оффф...Ако беше да ги начаткаш методи на класа....

 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
току-що, blodwenn написа:

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

Не сте, те се взимат после. Тая задача по тоя начин за мен си е подигравка. Най-гадното нещо е да се занимаваш с цикли в switch-ове и да правиш бъркочи с масиви. Като вземете нататъка ще видиш как се вмъква и измъква с Push и pop.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
току-що, simtech написа:

Не сте, те се взимат после. Тая задача по тоя начин за мен си е подигравка. Най-гадното нещо е да се занимаваш с цикли в switch-ове и да правиш бъркочи с масиви. Като вземете нататъка ще видиш как се вмъква и измъква с Push и pop.

ако това ще е от някаква помощ, споделям кода на мой колега, неговия е верен - проверен вече от асистентите

#include <iostream>
#include <string>

using namespace std;

int input(int x[]);
int mostoc(int x[], int n);
void masiv2(int n, int x[], int k[]);
void output(int n, int x[], int k[]);
void sort(int count, int x[], int k[]);

int main()
{
	int ch, A[30], B[30], C[30], n;
	do {
		cout << "\n1.Input Number and value of elements: \n";
		cout << "\n2.Show the most occured digit: \n";
		cout << "\n3.New Array with odd and even numbers \n";
		cout << "\n4.New Array with Ascending order  \n";
		cout << "\n5. Exit";
		do {
			cout << "\n\nChoice: \n";
			cin >> ch;
		} while (ch<1 || ch> 5);

		switch (ch)
		{
		case 1:
			n = input(A);
			break;
		case 2:
			cout << "Most occuring number is: " << mostoc(A, n) << endl;
			break;
		case 3:
			masiv2(n, A, B);
			output(n, A, B);
			break;
		case 4:
			sort(n, B, C);
			break;
		}
	} while (ch != 5);
}


int input(int x[])
{
	int i, n = 0;
	cout << "\n Input number of elements from 1 - 30: ";
	do {
		cin >> n;
	} while (n < 1 || n > 30);
	for (i = 0; i < n; i++)
	{
		do {
			cout << "Enter a 3 digit number of element [" << i + 1 << "] = "; cin >> x[i];
		} while (x[i] < 100 || x[i] > 999);
	}
	return n;
}

int mostoc(int x[], int n)
{
	int digits[10] = { 0,0,0,0,0,0,0,0,0,0 }, max_index = 0;
	int n0, n1, n2, last_max = 0;
	for (int i = 0; i < n; i++)
	{
		string number = to_string(x[i]);

		n0 = atoi(number.substr(0, 1).c_str());
		n1 = atoi(number.substr(1, 1).c_str());
		n2 = atoi(number.substr(2, 1).c_str());

		for (int j = 0; j < 10; j++)
		{
			if (n0 == j) digits[j]++;
			if (n1 == j) digits[j]++;
			if (n2 == j) digits[j]++;
		}
	}

	for (int i = 0; i < 10; i++)
	{
		if (last_max < digits[i])
		{
			last_max = i;
		}
	}
	return last_max;
}

void masiv2(int n, int x[], int k[])
{
	int next = 0;
	for (int i = 0; i < n; ++i)
	{
		if (x[i] % 2 == 1)
		{
			k[next] = x[i];
			next++;
		}
	}
	for (int i = 0; i < n; ++i)
	{
		if (x[i] % 2 == 0)
		{
			k[next] = x[i];
			next++;
		}
	}
}



void output(int n, int x[], int k[])
{
	cout << "Array 1: " << endl;
	for (int i = 0; i < n; i++) {
		cout << x[i] << "\n";
	}
	cout << "Array 2: " << endl;;
	for (int i = 0; i < n; i++)
	{
		cout << k[i] << "\n";
	}
}

void sort(int count, int x[], int k[])
{
	for (int i = 0; i < count; ++i)
	{
		k[i] = x[i];
	}

	int last = k[0], tmp;
	for (int i = 1; i < count; ++i)
	{
		for (int j = 0; j < count - 1; ++j)
		{
			if (k[j + 1] < k[j])
			{
				tmp = k[j];
				k[j] = k[j + 1];
				k[j + 1] = tmp;
			}
		}
	}
	for (int i = 0; i < count; i++)
	{
		cout << "Array2: " << "\t" << x[i] << "\t" << " Array3:" << "\t" << k[i] << endl;

	}

 

Сподели този отговор


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

ако това ще е от някаква помощ, споделям кода на мой колега, неговия е верен - проверен вече от асистентите

..

Ей сега ще ти постна цикъла, въвеждането в масива, обхода утре ще го плесна, ако имам време.
 

#include<iostream>
#include<cstdlib>
using namespace std;

int GR[3][3];
int dobavi(int mi);
bool menu=true;
int broi;
int main()
{
    do
    {
        cout<<"izbor \n";
        cout<<"1.vuvejdane na X studenta\n";
        cout<<"2.druga opciq\n";
        int izbor;
        cin>>izbor;

        switch(izbor)
        {
            case 1:
            cout<<"broi studenti \n";
            cin>>broi;
            dobavi(broi);
            break;
            case 2:
            cout<<"druga funkciq demonstraciq \n";
            break;
            default:
            cout<<"Greshka!\n";
        }
    }
    while(menu==true);
}
int dobavi(int broi)
{

    for(int i=0; i<broi; i++)
    {
        int fn;
        cout<<"fn";
        cin>>fn;
        int o1;
        cout<<"o1";
        cin>>o1;
        int o2;
        cout<<"o2";
        cin>>o2;
        GR[i][0]=fn;
        GR[i][1]=o1;
        GR[i][2]=o2;
    }
}


п.п Че преинсталирах и коде блокса, нещо крашва жестоко. 2 пъти пиша и губя работата.

п.п2 Променливите fn, о1 и о2 може да не се декларират глобални. Направих го за да проверя за грешки.
При теб масивът е по-голям, променливите повече - просто ги добавяш в цикъла и горе пишеш други числа в квадратните скоби за деклариране на двумерният масив.

 

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

Сподели този отговор


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

Лабораторното ми е в 17:00 така че до тогава някъде съм тук цял ден.

Сподели този отговор


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

Лабораторното ми е в 17:00 така че до тогава някъде съм тук цял ден.

Дерзай над кода, който съм ти дал. Частта, която съм ти направил е въвеждане в масива  и менюто. Утре един цикъл за извеждане и така..
Средно аритметичните пак се обхождат с цикъл и се смятат. Най-добре променливата къде пишеш брой студенти я остави глобална, да можеш да я ползваш в сметките в другите цикли - тя ще ти даде ефективният край на масива(до къде е пълен), за да можеш да ги изчислиш правилно.
Надявам се - разбра нещо, аз не съм добър учител.
Сигурно някой друг би ти помогнал по-бързо, ама... Верни са нещата, но не обичам програмиране, аз съм повече по електрониката. Докато вляза в такт..
Та, последният код е верен който съм ти дал. А за до го пробваш - сложи си CodeBlocks или някоя друга IDE с компилатор за C++
п.п От колегите можеш да видиш цикли някои, но внимавай. Техните задачи са други. Трябва преписване с разбиране. :D Единият като гледам обработва някакви низове от букви и им брои символите.

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

Сподели този отговор


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

 

преди 14 минути, simtech написа:

 

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

int GR[25][6];
int dobavi(int mi);
bool menu = true;
int fn;
int o1;
int o2;
int o3;
int o4;
int rez;
int main()
{
	do
	{
		cout << "izbor \n";
		cout << "1.vuvejdane na X studenta\n";
		cout << "2.druga opciq\n";
		int izbor;
		cin >> izbor;

		switch (izbor)
		{
		case 1:
			cout << "broi studenti \n";
			int broi;
			cin >> broi;
			dobavi(broi);
			break;
		case 2:
			cout << "druga funkciq demonstraciq \n";
			break;
		default:
			cout << "Greshka!\n";
		}
	} while (menu == true);
}
int dobavi(int broi)
{

	for (int i = 0; i<broi; i++)
	{
		cout << "f nomer";
		cin >> fn;
		cout << "ocenka1";
		cin >> o1;
		cout << "ocenka2";
		cin >> o2;
		cout << "ocenka3";
		cin >> o3;
		cout << "ocenka4";
		cin >> o4;
		cout << "rezultat";
		cin >> rez;



		GR[i][0] = fn;
		GR[i][1] = o1;
		GR[i][2] = o2;
		GR[i][3] = o3;
		GR[i][4] = o4;
		GR[i][2] = rez;
	}
}

страшно съм бавен :X

Сподели този отговор


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

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

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

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

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

  • Горещи теми в момента

  • Подобни теми

    • от Smile Box
      Здравейте моля ви за помощ опитвах няколко пъти но така и не успях да си направя задачата ето това е условието ако трябва ще платя. Благодаря предварително: 
      Даден е двумерен масив A с m реда и n стълба. Да се състави блок схема на алгоритъм, чрез който се създава нов масив b1, b2 ..., bn, като стойноста на bj е равна на средно аритметичното на отрицателните елементи в j -ия стълб. Да се състави програма по този алгоритъм.
    • от nisanx
      Здравейте!Трябва ми помощ направих две програми обаче незнам как да ги слея в 1 програма,по такъв начин че да не се промени нищо.И да ми изведе двете програми една под друга на команд пропта! Нов съм в програмирането затова ще се радвам ако ми помогнете да ги слея.
      #include <iostream>
      #include <stdlib.h>
      #include <time.h>
      using namespace std;
      #define N 30
      int A[N], n, i;
      void inputkeyboard()
      {
          do
       {
           cout<<"\n Razmer na masiva: ";
           cin>>n;
       }
       while (n<0 || n>N);
          for (i=0; i<n; i++)
          {
            cout<<"\n A["<<i+1<<"] = ";
            do
            {
              cin>>A;
            }
            while (A<100 || A>999);
          }
      }
      void inputrandom()
      {
          srand(time(0));
             do
       {
           cout<<"\n Razmer na masiva: ";
           cin>>n;
       }
       while (n<0 || n>N);
          for (i=0;i<n;i++)
          {
          A =100+rand()%900;
          }
          for (i=0;i<n;i++)
          {
              cout<<"\n A["<<i+1<<"] = "<<A;
          }
      }
      int main()
      {
          inputrandom();
          int P[10] = {};
          int p, max;
          
          for (i=0;i<n;i++)
          {
              P[A%10]++;
              p= A/10;
              P[p%10]++;
              P[p/10]++;
          }
         
          max = -1;
          for (i=0;i<10; i++) 
              if (P>max) 
                  max=P;
          
          for (i=0; i<10; i++)
              if (P==max) 
                  cout <<"\n Nai-chesto sreshtanata cifra e " << i << "  " << max << " broia\n";
                  
          system("pause");
          return 0;
      }
      //това е първата програмка//
       
      #include <iostream>
      using namespace std;
      int array[] = { 151,152,123,694,255,956,427,218,769,320 };
      int count = sizeof(array) / sizeof(int);
      int first(int an_array[],int  members)
      {
      int a, j, b, *T;
        
               T = new int [members];
               
               for (a = 0, j = 0; a < members; a++)
               {
                       b = an_array[a]; 
                       if (b % 2)
                              T[j++] = b;
               }
               for (a = 0; a < members; a++)
               {
                       b = an_array[a]; 
                       if (!(b % 2))
                              T[j++] = b;
               }
               cout << "\n\nIztinskiqt masiv e:\n"; 
               for (a=0;a<members; a++)
                       cout << an_array[a] << " ";
               cout << "\n\nV nachaloto sa nechetnite a sled tqh chetnite:\n"; 
               for (a=0;a<members;a++)
                       cout << T[a] << " ";
               
               cout << endl;
               delete [] T;
      }
      main()
      {
                first(array,count);
                         
                system("pause");
                return 0;
      } //а това е втората програмка//
      Благодаря ви предварително !!
       
       
    • от barry
      Здравейте,
      имам един масив от цели числа
      int a[] = {1, 2, 3, 4, 5, 6}; а израза
      (1 + 3)[a] - a[0] + (a + 1)[2] е равен на 8. По принцип i-тия елемент на масива е
      a[i] или *(a+i) но не разбирам другите две конструкции. Може ли някой да обясни как се изчисляват те?
      Благодаря предварително.
    • от HelloWorld
      Здравейте,
      Някой може ли да помогне с презаписването на масив в друг масив, т.е входните данни се записват в даден масив, но след това трябва да се прехвърлят на друг в отделна функция. 
    • от Hadjimehmed Shener
      Здравейте, трябва да представя курсова работа тази седмица . Направих си програмата, обаче имам едно условие още , което гласи "използвате запитване за името на играча и съхранявате резултатите в текстов файл" . Моля помогнете , ако е нужно ще ви пратя и целия код
  • Дарение

×

Информация

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