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

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

Kaldata.com - Форуми

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

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

Добре дошли!

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

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

 

Грешка при изпълнение на ООП

Featured Replies

Здравейте! Имам нужда от малко помощ. Направих си курсовата работа уж, но накрая ми изписва грешка "uninitialized local variable 'datGod' used" и не знам какво да правя вече... :/

Ето го кода:

/*Да се състави програма, която съхранява в масив следната информация за лекарствата в една аптека:
-наименование
-цена
-налично количество
-срок на годност ( дата, до която е годно)
и извършва следните операции, избрани от меню:
- добавя към масив данните на ново лекарство;
-извежда списък с данните на всички лекарства;
-извежда сумата на лекарствата, чийто срок на годност изтича на посочена дата
-създава нов масив с данните на лекарствата с налични количества под 10 броя или цена под 12 броя.
*/

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

using namespace std;

class Data{
public:
	int D, M, G;
	void inDat();
	void outDat();
};

void Data::inDat(){
	cout << "Въведете ден: "; cin >> D;
	cout << "Въведете месец: "; cin >> M;
	cout << "Въведете година: "; cin >> G;
}

void Data::outDat(){
	cout << "Ден: " << D << "Месец: " << M << "Година: " << G << endl;
}

class Lekarstva{
public:
	char naimenovanie[31];
	float cena;
	int kolich;
	Data datGod;
	Data tekDat;
	void izvedi();
	void getData();
	void display();
};

void Lekarstva::getData(){
	cin.ignore();
	Data datGod;
	cout << "Наименование: "; cin.getline(naimenovanie, 30);
	cout << "Единична цена: "; cin >> cena;
	cout << "Количество: "; cin >> kolich;
	cout << "Срок на годност: \n"; datGod.inDat();
}

void Lekarstva::display(){
	cin.ignore();
	Data datGod;
	cout << "Наименование: " << naimenovanie << "\nЕдинична цена: " << cena << "\nКоличество: " << kolich;
	cout << "\nСрок на годност: "; datGod.outDat();
}

//Извежда сумата на лекарствата, чийто срок на годност изтича на посочената дата.
void izvejdane(Lekarstva mas[], int br){
	Data tekDat;
	Data datGod;
	float suma = 0;
	cout << "Въведете текуща дата: "; tekDat.inDat();
	for (int i = 0; i<br; i++)
	if (tekDat.D == datGod.D&&tekDat.M == datGod.M&&tekDat.G == datGod.G)
	{
		suma += mas[i].cena*mas[i].kolich;
		cout << "Сумата е: " << suma;
	}
}




void main(){
	system("chcp 1251");
	char kod;
	int brlek = 0, i;
	Lekarstva apteka[10];
	do{
		cout << "Меню на изпълняваните операции\n";
		cout << "1 - Ново лекарство\n";
		cout << "2 -Всички лекарства\n";
		cout << "3 -Лекарства с изтекъл срок на годност към посочената дата\n";
		cout << "4 -Лекарства с налични количества под 10 броя или цена под 12лв.\n";
		cout << "Въведете код за операция или 0 за край!\n"; cin >> kod;
		switch (kod){
		case'0':break;
		case'1':apteka[brlek++].getData(); break;
		case'2':for (i = 0; i<brlek; i++)apteka[i].display(); break;
		case'3':izvejdane(apteka, brlek); break;
		default:cout << "Въведен е грешен код!\n";
		}
	} while (kod != 0);
}

 

void izvejdane(Lekarstva mas[], int br){
	Data tekDat;
	Data datGod;
	float suma = 0;
	cout << "Въведете текуща дата: "; tekDat.inDat();
	for (int i = 0; i<br; i++)
	if (tekDat.D == datGod.D&&tekDat.M == datGod.M&&tekDat.G == datGod.G)
	{
		suma += mas[i].cena*mas[i].kolich;
		cout << "Сумата е: " << suma;
	}
}

На третия ред декларираш в стека дата на годност.

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

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

  • Автор
преди 26 минути, Реджеп Иведик написа:

void izvejdane(Lekarstva mas[], int br){
	Data tekDat;
	Data datGod;
	float suma = 0;
	cout << "Въведете текуща дата: "; tekDat.inDat();
	for (int i = 0; i<br; i++)
	if (tekDat.D == datGod.D&&tekDat.M == datGod.M&&tekDat.G == datGod.G)
	{
		suma += mas[i].cena*mas[i].kolich;
		cout << "Сумата е: " << suma;
	}
}

На третия ред декларираш в стека дата на годност.

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

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

Благодаря ти много за помощта! Оправи се :)

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

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

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

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

Дарение

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

Бюлетин

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

Профил

Навигация

Търсене

Търсене

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

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