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

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

Kaldata.com - Форуми

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

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

Добре дошли!

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

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

 

Помощ със задача по програмиране в C++

Featured Replies

Съставете програма с меню за избор на функция за:

a)       Въвеждане от клавиатурата в масив и файл /чрез допълване/ данните за К  вложители в банка /К<=50/: име BLV USD EURO. Извеждане текущото съдържание на масива /файла/ на екран

b)      Извеждане на справки за

-          Вложител по въведено име /със запитване на нова справка – диалогова процедура/

-          Всичко вложители с обща сума на влогове /в лева/ над зададена и според текущите курсове на валутата

c)       Пренареждане на данните за вложители във възходящ ред според влоговете в USB /или  EURO или BLV – по избор/ и извеждането им на екрана

Главната функция main – с меню за избор на функция задължително да се използва. Използване на главни променливи или функции с предаване на параметри – по избор.

  • Автор
#include <iostream>
#include <fstream> 
#include <string>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
const int N = 50;
const char Name[] = "vlojiteli.dat";
fstream fp;
int v;            //broi vlojiteli

struct vlojiteli
{
	char imena [30];
	double Vlog_BLV;
	double Vlog_USD;
	double Vlog_EURO;
};

void suzdavane(vlojiteli st[]);
void izvejdane(vlojiteli st[]);
void search(vlojiteli st[]);
void spravka(vlojiteli st[]);


int main()
{
	struct vlojiteli st[N];
	int izbor;
	do
	{
		do
		{
			cout << endl << "************MENU**************" << endl;
			cout << "1. Suzdavane na fail za grupa ot vlojiteli." << endl;
			cout << "2. Izvejdane na dannite za vlojiteli." << endl;
			cout << "3. Spravka za vlojitelite po imena." << endl;
			cout << "4. Spravka za vlojitelite s obshta suma nad zadadenata spored valutniq kurs." << endl;
			cout << "5. Exit" << endl;
			cout << "Izbor:  ";
			cin >> izbor;
		} while (izbor < 1 || izbor> 5);
		switch (izbor) {
		case 1:suzdavane(st); break;
		case 2:izvejdane(st); break;
		case 3:search(st); break;
		default: cout << endl << "*********Krai**********" << endl;
		}
	} while (izbor != 5);
	return 0;
}

void suzdavane(vlojiteli st[])
{
	int i;

	while (true) {
		cout << "Broi vlojiteli (max broi e 50): ";
		cin >> v;
		if ((v > N) || (v < 1))
			cout << endl << "Vavedete chislo ot 1 do 50!" << endl;
		else break;
	}

	fp.open(Name, ios::binary | ios::out);
	if (!fp) { cout << endl << "Ne moje da se raboti s faila!"; exit(1); }
	for (i = 0; i < v; i++)
	{
		fflush(stdin);
		cout << "\n Ime na vlojitel: "; cin >> st[i].imena;
		cout << "\n Vlog v BLV: "; cin >> st[i].Vlog_BLV;
		cout << "\n Vlog v USD: "; cin >> st[i].Vlog_USD;
		cout << "\ Vlog v EURO: "; cin >> st[i].Vlog_EURO;

	}
	fp.write((char*)st, v * sizeof(vlojiteli));
	fp.close();
}

void izvejdane(vlojiteli st[])
{
	long pos;
	int i;
	vlojiteli s;
	cout << "\n Izvejdane  na vuvedenite vlojiteli\n";
	fp.open(Name, ios::binary | ios::in);
	if (!fp) { cout << endl << "Ne moje da se raboti s faila!"; exit(1); }
	fp.seekg(0L, ios::end);
	pos = fp.tellg();
	fp.close();
	fp.open(Name, ios::binary | ios::in);
	if (!fp) { cout << endl << "Error"; exit(1); }
	for (i = 0; i < pos / (sizeof(vlojiteli)); i++)
	{
		fp.read((char*)&s, sizeof(vlojiteli));
		st[i] = s;
		cout << "\n Ime na vlojitel: "; cin >> st[i].imena;
		cout << "\n Vlog v BLV: "; cin >> st[i].Vlog_BLV;
		cout << "\n Vlog v USD: "; cin >> st[i].Vlog_USD;
		cout << "\n Vlog v EURO: "; cin >> st[i].Vlog_EURO;
	}
	fp.close();
}

void search(vlojiteli st[])
{
	char imena[30];
	long pos;
	int i;
	int k = 0;
	vlojiteli s;
	cout << "\n Spravka po ime na vlojitelq:";
	cin >> imena;
	fp.open(Name, ios::binary | ios::in);
	if (!fp) { cout << endl << "Ne moje da se raboti s faila!"; exit(1); }
	fp.seekg(0L, ios::end);                        //premestva ukazatelq na faila v kraq na poziciqta
	pos = fp.tellg();                              // opredelq duljinata na faila v baitove
	fp.close();
	fp.open(Name, ios::binary | ios::in);
	if (!fp) { cout << endl << "Ne moje da se raboti s faila!"; exit(1); }
	for (i = 0; i < pos / (sizeof(vlojiteli)); i++)
	{
		fp.read((char*)&s, sizeof(vlojiteli));
		st[i] = s;
		if (strcmp(st[i].imena, imena) == 0)
		{
			cout << "\n Ime na vlojitel: "; cin >> st[i].imena;
			cout << "\n Vlog v BLV "; cin >> st[i].Vlog_BLV;
			cout << "\n Vlog v USD"; cin >> st[i].Vlog_USD;
			cout << "\ Vlog v EURO"; cin >> st[i].Vlog_EURO;
			k++;
		}
	}
	if (k == 0) {
		cout << "\n Ne e nameren vlojitel. \n"; exit(1);
	}
	fp.close();
	
	void spravka(vlojiteli st[]);
	{
		int num = 0;
		if (num)
		{
			vlojiteli temp;
			for (int i = 0; i < num; i++)
			{
				for (int j = 0; j < num - i - 1; j++)
				{
					if (st[j].Vlog_USD > st[j + 1].Vlog_BLV)
					{
						temp = st[j];
						st[j] = st[j + 1];
						st[j + 1] = temp;
					}
				}
			}
			cout << "\n Spisuk na vlojiteli vuv vuzhodqsht red sprqmo vloga im: " << endl << endl;
			for (int i = 0; i < num; i++)
			{
				cout << " Ime: " << st[i].imena << endl;
				cout << " Vlog v BLV " << st[i].Vlog_BLV << endl;
			}
		}
		else
			cout << "\n Nqma vuvedeni studenti!" << endl;
	}
}

Имам нещо направено, но не работи както трябва.

Защо сте напъхал два цикъла за менюто?

Архивирана тема

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

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

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

Дарение

  • Подкрепи съществуването на форума - направи дарение
    25%
    Дарени 252.69 EUR от нужните 1,000.00 EUR

Бюлетин

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

Профил

Навигация

Търсене

Търсене

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

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