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

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

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

     

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


Здравейте! Имам нужда от малко помощ. Направих си курсовата работа уж, но накрая ми изписва грешка "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;
	}
}

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

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

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

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

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


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

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

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

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

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

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

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

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

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


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

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

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

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

    • от силвия димитрова стефанова
      Здравейте, може ли помощ със сортиране по азбучен ред. Трябва да сортирам книги по Фамилия на автор
    • от Александър Миланоски
      Здравейте, това ми  първия път през живота си , който пиша във форум , искам да кажа предварително че компютърната ми култура и грамотност не са големи , наскоро започнах да чета и да се занимавам понеже искам да си взема настолен комптър с монитор,за определени цели - стриймване  и игра.
      Разполагам с бюджет от 1500лв, търся си настолен компютър  (цял или да си го сглобя част по част ) както и монитор към него. На този компютър искам да мога да играя Фортнайт и СтарКрафт 2 както и след време да правя стримове на тези игри . В момента сегашния ми ламптоп искам  когато разполагам с новия компютър да го използвам за да обработвам видео  материала , който ще записвам и извличам от новия компютър ( мисля да използвам OBS ) ( въпреки че не ми идва идея как да прехвърля видеото което ще е записано от новия компютър на сегашния ми лаптоп ,и дали то ще се промени когато бъде пренесено в лаптопа  , флашка? )
      Като характеристики за компютъра  от който имам нужда  сравнявам с препоръчителните системни изисквания на Фортнайт, целта не ми е всичко да върви на максимално качество , но поне ако играя  и стриймвам с настройки на играта средни,ФПС-са да не са ми както на сегашния ми компютър едвам 40-50 (целя се да е нещо над 90FPS) и да ми лагва и да е толкова зле за контролиране , камо ли да взема да записвам всичко това , с това качество.
      Системните изисквания на Фортнайт за да върви добре играта :
      CPU: Core i5 2.8GHz. RAM: 8GB RAM. HDD: 16GB Free Space. GPU: Nvidia GeForce GTX 660 / AMD Radeon HD 7870 or equivalent video card with dedicated memory of 2GB or higher VRAM. OS: Windows 7, 8.1, or Windows 10 64-bit. DirectX: Version 11 or better.  
      Гледах  всякакви различни клипчета в ютуб за при избор на различни компоненти в този случай Видео карта като едно ми хвана окото :
      сетъпа от това видео :
      CPU:Intel Core i5 6500
      Ram:16gb DDR4
      VGA:Asus Dual RX 580 (4GB)
      HDD:2x120 SSD
      POWER:Croshair 650W
      --------------------------
      допълнителен въпрос , ако копирам този сетъп  от това видео бих ли могъл като си сваля и OBS и нещата за стрийм при пускане на това да не се развали ФПС и качеството на gameplay-я , понеже четох че тези програми изкисвали стабилен процесор, който ако мога да сменя от този сетъп  и да сложа по-добър, как биха тръгнали нещата , както и това дали са съвместими( няма как да си харесам предполагам каквито и да са части и да сглобя нещо от тях , трябва да са съвместими , но как всъщност разбираме дали са съвместими подбраните части  ?)
      Друг въпрос е когато четох видях за разликата между монитора и че има значение и какъв монитор разполгаш , неговия вид ,време за реакция и търся нещо което би си паснало добре с горните настройки, имайки предвид че ще   си останат същите части или ако ги променим и заместим с по-добър клас части за постигане на по-голямо качество ?
      Видео карта ,процесора и монитора били от значение за геймърите и тези три компонента оказват влияние на ФПС-а в играта, следователно и на стрийм(ако е пуснат) ?
      Дали ако се закупят 2x8 gb Ram би било от полза или ако е за просто две игри,записващата и стриймваща програма  няма смисъл понеже останалото пространство просто няма да се използва или е добра инвестиция ако в бъдеще ще се добавят нови игри на този компютър?
      С кои части бих могъл да сменя по-горния сетъп така че да получа по-добра качество на gameplay-я и stream-ването , като същото време всичко това ,включително и монитора да не надвишават бюджета ?
      Не търся определени марки , а по-скоро постигане на качество на gameplay-я и stream-ването, както и не съм се спрял на точно определени сайтове за купуване на техниката
       
      Благодаря Ви за отделеното време .
       
       
    • от силвия димитрова стефанова
      Може ли да ми помогнете с тази програма как да използвам указателите. 
      Ето го условието:  
      Да се напише програма на С/С++ (за 50 точки), която реализира малка информационна система
      за книжарница. За тази цел е необходимо да се създаде масив от книги (записи със следните
      данни):
      - Име и фамилия на автора (един стринг)
      - Наименование – заглавие (стринг)
      - Артикулен номер (число)
      Програмата да предлага на потребителя меню за работа със следните възможности:
      1. Добавяне на нов запис (книга)
      2. Търсене на книга по артикулен номер
      3. Сортиране на книгите по фамилия на автора (извлечена от стринга)
      Задачата да се реализира с функции и предаване на параметри чрез указатели. Ако се добави
      четене на масива и запис на масива във файл, то точките се увеличават с още 10 бонус точки.
      #include <iostream> #include <Windows.h> using namespace std; const int n = 30; int num = 0; struct MyStruct { char ImeAvtor[30]; char FamAvtor[30]; char Zaglavie[30]; long int ArtikulenNomer; }grupa[n]; void addZapis(); void searchBook(); void addZapis() { int br; cout << "\n Брой книги "; cin >> br; for (int i = num; i < num + br; i++) { cout << "\n\t Въведете данни за книга №" << i + 1 << endl; cout << "Име и фамилия на автора: " << endl; cin >> grupa[i].ImeAvtor>>grupa[i].FamAvtor; cout << "\n\t Въведете заглавие: "; cin >> grupa[i].Zaglavie; cout << "\n\tВъведете артикулен номер: "; cin >> grupa[i].ArtikulenNomer; } num = num + br; } void searchBook() { int flag = 0; long int TarsArtNomer; cout << "\n Въведете търсения артикулен номер: "; cin >> TarsArtNomer; for (int i = 0; i < n; i++) if (TarsArtNomer == grupa[i].ArtikulenNomer) { cout << "Име и фамилия на автора: " << grupa[i].ImeAvtor<<grupa[i].FamAvtor << endl; cout << "Заглавие: " << grupa[i].Zaglavie << endl; cout << "Артикулен номер: " << grupa[i].ArtikulenNomer << endl; flag++; } if (!flag) cout << endl << "НЯМА ТАКАВА КНИГА!!!" << endl; }  
    • от Joanna01
      I. Да се дефинира абстрактен клас CPerson, с член данни име и ЕГН, освен необходимите методи , да се напишат и следните:
      • абстрактен метод за печат;
      • метод, който връща възрастта иа човека на база на ЕГН-то;
       • метод, който връща месеца, през който е роден човека на база на ЕГН-то.
      II. Да се дефинира клас преподаgател CLecturer наследник на CPerson, съхраняващ информация за научно звание (от изброим тип — ас., гл.ас., доц. ...) и контейнер от дисциплини, които води, с необходимите конструктори, методи и оператори (сред които е функцията за печат).
      III. Да се дефинира клас катедра CDepartment, съхраняващ информация за име на катедрата и контейнер от преподавателите в нея (vector<CLecturer>). Освен необходимите методи, да се реализират и следните член функции:
      • конструктор с параметър име на файл, с данните от който се инициализира обекта;
      • изчислява и връща броя на преподавателите със зададено като параметър научно звание;
      • връща списък от преподавателите (list<CLecturer*>), водещи дисциплина, подадена като параметър;
      • изчисляsа и връща средната възраст на преподавателите със зададено като параметър научно звание;
      • изчислява и връща контейнер от преподаватели, които подлежат на пенсиониране до 3 години;
      • намира броя на преподавателите, родени през месец, подаден като парамеrьр;
      • връща през кой месец има родени най-много доценти;
      • връща броя на преподавателите, родени през зададен като параметър сезон; 

      IV. Да се създадат няколко обекта от класа CDepartment u се демонстрира работоспособността на методите му като се направят различни справки и съпоставки между тях (напр. коя катедра има по-киска средна възраст, коя катедра има повече доценти, кои дисциплини се водят от преподаватели и в двете катедри, в коя катедра има повече преподаватели родени през лятото). 
  • Дарение

×
×
  • Добави ново...