toneff Posted November 19, 2006 Share Posted November 19, 2006 ................................................... Направете на С++ следната програма: Да се състави програма за обслужване на автосалон. За всеки автомобил се въвежда следната информация: марка на автомобила, година на производство, цена. Програмата да дава възможност за получаване на следните резултати: 1. Извеждане на списък на всички автомобили с въведените данни за тях; 2. Извеждане на списък на всички автомобили, които са произведени преди 1998 година; 3. Извеждане на списък на всички автомобили, чието име започва с OPEL; 4. Извеждане на списък на всички автомобили, подредени в низходящ ред на цената им. Ако има автомобили с една и съща цена, по-напред в списъка да се изведе този, който е по-нов. ................................................... Трябва ми сорс код на подобна програма за да се орентирам по него и да напрява тази, която ми е дадена .... Благодаря предварително Link to comment Share on other sites More sharing options...
JDFU Posted November 19, 2006 Share Posted November 19, 2006 Със или без класове? Link to comment Share on other sites More sharing options...
veseo Posted November 19, 2006 Share Posted November 19, 2006 Със или без класове? Това е типична задача за упражнение на класове, така че очевидно ще е с Ако имам време по-късно след филма ще я напиша. Link to comment Share on other sites More sharing options...
Raging Fire Posted November 19, 2006 Share Posted November 19, 2006 задължително ли е да е на c++? има ли някаква награда или ей тъка за кеф ? Link to comment Share on other sites More sharing options...
NRG_God Posted November 19, 2006 Share Posted November 19, 2006 Т'ва го правехме по информатика на Ексел ,а какво е Ц++ си нямам и представа Link to comment Share on other sites More sharing options...
Sonic Posted November 23, 2006 Share Posted November 23, 2006 Трябва ми сорс код на подобна програма за да се орентирам по него и да напрява тази, която ми е дадена .... Благодаря предварително Баш сега да почна да я пиша - ще ми требва 1/2 - 1 час , затва набързо ще нахвърлям идеята , пък така и ти малко ще позагрееш с писането на подобни дивотии смятам - което ще ти е много по-приложимо вбъдеще - Правиш си един клас TCar примерно , пускаш му полета - ам квито смяташ че са нужни. -Отдели годината на производсто да е int че по-лесно да става търсене/сравнение ( мисля че е ключов момент в някои аспекти ) -Пусни си в main() един цикъл за въвеждане , като при всяка интерация си създаваш нов обект от TCar, и го записваш в някакъв масив ( примерно ( най-добре е свързан списък - за да нямаш предварително дефиниран брой ( но незнам на кво C пишеш - щото може и да декларираш на някои C-та променлива от различен тип в момента на извикването и ... но както и да е ... - направи си го статично засега - примерно aCars да е масив от указатели към TCar ( или просто указател към прост тип ) и с големина 10 ( примерно ) ) ) ) бих препоръчал да си направиш някакво меню - от където да си избираш операциите - и то да е в някакъв цикъл с възможност за изход ... ( ама тва е гъзария де ) Та селдващото нещо което искаш е да изведе колите ... - ми пак си правиш един цикъл от 0 до числото с големина на масива -1 и взимаш указател към обекта от масива и извеждаш каквото там съдържа После пак така, ама след като вземеш указатела - веднага проверяваш дали годината е > 1998 и тогава извеждаш ( ако е вярно ) Следващото е проверка дали е "opel" - има няколко функции , които проверяват дали определн string е substring на друг string - та ползвай някоя от тях ... сега точно кои бяха - забравих ( ако се сетя ще я адд-на към поста ) , та ако е substring - извеждаш. екстрата на това да е substring е голяма - щото може да имаш подобни записи: Opel Ascona скапан Opel nадраскан Opel леко блъснат Opel и пак ще се открие че има Opel в името - лесно и бързо После за нисходящия ред - ми - като идея ми идва да сортираш предварително масива , като сменяш местата на указателите , та после като почнеш да въртиш цикъл за показването им - те вече да са си сортирани ... Link to comment Share on other sites More sharing options...
toneff Posted November 25, 2006 Author Share Posted November 25, 2006 Споко оравих се напраях е с Масив ... стана перфектна 2 страници Сорс е .. мерси много между другото, може и с класове, но по учебна програма нетрябва с тях и я направих с масив... мерси много за отговорите Link to comment Share on other sites More sharing options...
Sonic Posted November 27, 2006 Share Posted November 27, 2006 еййй - ма то все едно съм ти казал кво да направиш - хехехехе все пак си е хубаво упражнение btw - масив от записи е съшото като масив от калсове в твоя случай , защото и без това не изпозлваш отделни секции на видимост и имаш статична бройка Link to comment Share on other sites More sharing options...
THE STORM Posted December 7, 2006 Share Posted December 7, 2006 Само като съвет. В С++ харесвам динамиката, щом го учиш гледай да не се ограничаваш със статични масиви и изобщо със статично разпределяне на паметта. Ползвай STL по специално <string> и <vector> хедърите в комбинация с класове. Наскоро писах същатата програма на един приятел, беше станала супер. Link to comment Share on other sites More sharing options...
Fr0Zen Posted July 16, 2007 Share Posted July 16, 2007 Имам следната задача: Съставете програмна система за търговска дейност на аптека, съдържаща сведения за лекарствата(до 1000) продавани в аптеката.За всяко лекарство, трябва да се поддържа следната информация:уникално име(знаков низ до 40 знака) странични ефекти(знаков низ, до 80 знака, съдържащ имената на страничните ефекти, разделени със запета), количествена наличност в склада на аптеката(цяло число), единична цена на лекарството(положително число с до 2 цифри в дробната част) 1.Въведете цяло число N, определящо броя на наличните лекарства в аптеката, след това въведете данните за лекарствата. Игнорирайте некоректните данни. 2.Отпечатайте списък на наличните в склада лекарства, съдържащ име, количество, и стойност(количество/единична цена) на лекарството.Списъкът трябва да бъде подреден по намаляване на единичната цена, а при равни цени - по азбучен ред на името на лекарството. 3.Определете и изведете средната единична цена на лекарствата, чито единична цена се различва с до 10% от намерената цена. 4.Определете лекарството с най-висока стойност сред лекарствата, в чието име буквата "а" се среща от 4 до 6 пъти, и отпречатайте неговото име, количество и единична цена(в случай на няколко лекарства списъкът трябва да бъде подреден по азбучен ред на името налекарството). Повечето от програмата мога да я направя но единственото което ме спъва е сортирането в азбучен ред.Четох за sort() функцията, мога да я използвам за сортиране на числа в даден масив, но не мога да се оправя с сортирането на букви.Ако някой може да ми даде някакви насоки за сортирането ще съм му много благодарен .И още нещо - все още съм начинаещ за това не давайте някакви сложни решения, а въможно най простите . Ето и до къде съм стигнал с писането на програмата: #include <iostream>#include <string> #include <iomanip> #include <algorithm> using namespace std; class apteka { private: char ime[40]; char str[80]; //stran4ni efekti int nal; //nali4nost v sklada double cena; public: void read(); void sort_cena(int n, apteka a[]); void print(); int usl_tri(int n, double s); }; int main() { cout << setprecision(2) << setiosflags(ios::fixed); cout << "Vuvedete broq na lekarstvata : "; int n; cin >> n; if(n < 0 || n > 1000) { cout << "Error, wrong input "; return 1; } apteka table[1000]; apteka a; for(int i=0;i<=n-1;i++) { table.read(); } a.sort_cena(n, table); for(int i =0;i<=n-1;i++) { } } void apteka::read() { cout << "Vuvedete imeto na lekarstvoto : "; char p[100]; cin.getline(p, 100); cin.getline(ime, 40); cout << "Vuvedete strani4nite efekti: "; cin.getline(str, 100); cout << "Vuvedete nali4nostta v sklada: "; cin >> nal; cout << "Vuvedete cenata na lekarstvoto: "; cin >> cena; } void apteka::sort_cena(int n, apteka a[]) { for(int i = 0;i<=n-2;i++) { int k = i; double max = a.cena; for(int j = n-1;j<=n-2;j++) { if(a[j].cena > max) { a[j].cena = max; j = k; } if(a[j].cena=max) { // // } } apteka x = a; a = a[k]; a[k] = x; } } void apteka::print() { cout << endl; cout << ime << ", " << str << ", " << nal << ", " << cena; cout << endl; } Link to comment Share on other sites More sharing options...
JDFU Posted July 16, 2007 Share Posted July 16, 2007 В зависимост от желанието могат да се направят доста варианти. Предполагам ти трябва най-лесния, за това погледни какво могат функциите strcmp и strcpy. Link to comment Share on other sites More sharing options...
OutSider Posted July 16, 2007 Share Posted July 16, 2007 Задачата от предварителния изпит по информатика 2006 работеща иначе мисля че ще стане с for (int i=1; i<=n; i++) for(int j=n; j>=n; j--) if(strcmp(a[j].ime,a[j-1].ime)<0) { x=a[j]; a[j]=a[j-1]; a[j-1]=x; } ако е грешен някой да поправи Link to comment Share on other sites More sharing options...
JDFU Posted July 16, 2007 Share Posted July 16, 2007 Вътрешният цикъл е грешен. Link to comment Share on other sites More sharing options...
OutSider Posted July 17, 2007 Share Posted July 17, 2007 значи е x=a[j-1]; a[j-1]=a[j]; a[j]=x; предполагам Link to comment Share on other sites More sharing options...
joseph Posted July 17, 2007 Share Posted July 17, 2007 не е (a[j].ime,a[j-1].ime) а (a[j-1].ime,a[j].ime) Link to comment Share on other sites More sharing options...
Fr0Zen Posted July 17, 2007 Share Posted July 17, 2007 Благодаря, много ми помогнахте Успях да си направя програмката, стана перфектна направих я със структури, отказах се от варианта с класове изглежда ми трябва още да ги понауча докато мога да ги използвам пълноценно.Но сега пък изниква нов проблем - още една задача давана на 21 юли 2006г. в ПУ, подобна е на първата но се изисква приемането на входни данни на кирилица.Не знам дали проблема е в моя телевизор(Microsoft Visual Studio 2005), но когато задам на компилатора следния ред char b[10] = "абвгдеж";cout << b; резултатът е "рстуфхц".И още нещо - в задачата се изисква първите имена на авторите да се изписват само с главни бувки.Имаше една вградена функция в header файла <algorithm>, но в момента не мога да намеря точно коя беше. Link to comment Share on other sites More sharing options...
JDFU Posted July 17, 2007 Share Posted July 17, 2007 Ползвай unicode...ще си спестиш доста подобни главоболия. Link to comment Share on other sites More sharing options...
joseph Posted July 25, 2007 Share Posted July 25, 2007 //izpit_2006B #include <iostream.h> #include <string.h> struct book {char zaglavie[41]; //Zaglavie char imena[80]; //Imena na avtorite char pavtor[80]; //Imena na pyrvi avtor int god_izd,god_pr;//Godini na izdavane i pridobivane int br_ekz; //Broi ednakvi ekzemplyari double ed_cena; //Edinichna cen double st; // Stoinost na vsichki ekzemplyari } a[1001];//Masiv ot zaglaviya struct avtors {char avtor[80]; //Imena na avtora int broi; // Razlichni zaglaviya na avtora } b[1001]; // Masiv ot avtori za tochka 3 int N,M=0; // N - broi zaglaviya // M - broi avtori, za uslovieto po tochka 3 void input(book &a) { cout<<"Zaglavie: "; cin.getline(a.zaglavie,40); strtok(a.zaglavie,"\n"); cout<<"Imena na avtorite: "; cin.getline(a.imena,80); strtok(a. imena,"\n"); strcpy(a.pavtor,a.imena); strtok(a.pavtor,";"); cout<<"Godina na izdavane: ";cin>>a.god_izd; cout<<"Godina na pridobivane: ";cin>>a.god_pr; cout<<"Broi ekzemplyari: ";cin>>a.br_ekz; cout<<"Edinichna cena: "; cin>>a.ed_cena; cin.ignore(); a.st=a.ed_cena*a.br_ekz; } void output(book a) { char *n1, *n2, *n3, ip[80]; strcpy(ip,a.pavtor); n3=strrchr(ip,' ');//Nasochva n3 kym poslednia interval v ip n1=strtok(ip," ");//Izvlicha pyrvoto ime n1 n2=strtok(NULL," ");//Izvlicha vtoroto ime n2 n3++;//Nasochva n3 kym sledvashtia znak (poslednoto ime) cout<<a.zaglavie<<" "<<a.god_izd<<" " <<n3<<" "<<n1[0]<<"."<<n2[0]<<". "<<a.br_ekz<<endl; } void inbooks() {for (int i=1;i<=N;i++) {input(a); for (int j=1;j<i;j++) if (strcmp(a.zaglavie,a[j].zaglavie)==0) {cout<<"Zaglavieto "<<a.zaglavie<<" se povtarya!! Vyvedete otnovo! "; i--;break;} } } void outbooks() {for (int i=1;i<=N;i++) output(a);} void sort_s() // Sortira po godini na_izdavane i pridobivane { int i,j; book x; for(i=2; i<=N; i++) for (j=N; j>=i; j--) if (a[j-1].god_izd<a[j].god_izd || a[j-1].god_izd==a[j].god_izd && a[j-1].god_pr>a[j].god_izd) { x=a[j-1];a[j-1]=a[j];a[j]=x;} } void spisak() //Izvejda spisyk avtori za 2 { sort_s(); outbooks(); long obshtbr=0; double obshtast=0; for (int i=1;i<=N;i++) { obshtbr+=a.br_ekz; obshtast+=a.st; } cout<<"Obsht br. ekzempliari:"<<obshtbr<<" na stoynost:"<<obshtast<<endl; } void dobavi(book x) //Dobavya avtor po tochka 3 { for (int i=1;i<=M;i++) /* Ako avtoryt se sreshta v masiva, to uvelich va poleto broi zaglaviya i napuska podprogramata */ if (strcmp(x.pavtor,b.avtor)==0) { b.broi++;return;} /* Ako izpylnenieto stigne dotuk, to avtoryt ne se e sresht « do momenta i se dobavya kato nov element v masiva */ M++;strcpy(b[M].avtor,x.pavtor);b[M].broi=1; } void maxavtor() //Reshenie na 3 { for (int i=1;i<=N;i++) dobavi(a); int max=b[1].broi; for (i=2;i<=M;i++) if (b.broi>max) max=b.broi; cout<<"Maksimalen broy knigi na edin avtor:"<<max<<endl; cout<<"SLedva spisyk na avtorite s tozi broy:"<<endl; for (i=1;i<=M;i++) if (b.broi==max) cout<<b.avtor<<endl; } void main() { do {cout<<"n=";cin>>N;} while (N<1 || N>1000); cin.ignore(); inbooks(); cout<<"Reshenie 2 podtocka:"<<endl; spisak(); cout<<"Reshenie 3 podtocka:"<<endl; maxavtor(); } Link to comment Share on other sites More sharing options...
mme Posted January 17, 2008 Share Posted January 17, 2008 ...................................................Направете на С++ следната програма: Да се състави програма за обслужване на автосалон. За всеки автомобил се въвежда следната информация: марка на автомобила, година на производство, цена. Програмата да дава възможност за получаване на следните резултати: 1. Извеждане на списък на всички автомобили с въведените данни за тях; 2. Извеждане на списък на всички автомобили, които са произведени преди 1998 година; 3. Извеждане на списък на всички автомобили, чието име започва с OPEL; 4. Извеждане на списък на всички автомобили, подредени в низходящ ред на цената им. Ако има автомобили с една и съща цена, по-напред в списъка да се изведе този, който е по-нов. ................................................... Трябва ми сорс код на подобна програма за да се орентирам по него и да напрява тази, която ми е дадена .... Благодаря предварително Ако има някой с готово решение, моля нека го публикува. Благодаря. Link to comment Share on other sites More sharing options...
notor1ous Posted January 18, 2008 Share Posted January 18, 2008 Ако има някой с готово решение, моля нека го публикува.Благодаря. Е това са най-баналните учнически (студентски) задачи. Щом искаш С++ направи си един клас за описание на всеки автомобил, тъпчи ги в STL вектор (динамичен масив) и направи няколко метода за нужните операции, който да са капсулирани в отделен клас за по-голяма прегледност и да работят с векор с елементи от класа за автомобили. Ако се поразтършиш из нет-а ще намериш доста такива задачки за магазини, аптеки, книжарни, библиотеки и т.н. Те всички са напълно еднакви като логика и само наименованията на класовете в кода са различни Link to comment Share on other sites More sharing options...
mme Posted January 18, 2008 Share Posted January 18, 2008 O.K. Лесно, лесано ама за мен не е точно толкова и като не мога да се оправя? Link to comment Share on other sites More sharing options...
po_taka Posted January 18, 2008 Share Posted January 18, 2008 O.K. Лесно, лесано ама за мен не е точно толкова и като не мога да се оправя? ето ти моето миналогодишно, с малко изменения в имената на меню-то и предполагам ще стане #include<iostream.h> #include<iomanip.h> #include<string.h> #include<conio.h> struct koli {unsigned long int cena; char ime[22]; int godina; unsigned long int km; }; void menu1(){cout<<setw(22)<<"ime"<<setw(8)<<"godina"<<setw(11)<<"cena"<<setw(8)<<"km";} void vavejdane(koli a[],int&br){cin.get(); cout<<"Broi Koli->";cin>>br; if(!cin){cout<<"Error";getch();} for(int q=1;q<=br;q++){cin.get(); cout<<"\n---- "<<q<<" ------\n"; cout<<"ime->";cin.getline(a[q].ime,21); cout<<"cena->";cin>>a[q].cena; if(!cin){cout<<"Error";getch();} cout<<"godina";cin>>a[q].godina; if(!cin){cout<<"Error";getch();} cout<<"Kilometri->";cin>>a[q].km; if(!cin){cout<<"Error";getch();} } }; void izvejdane(koli a[],int br){ menu1(); for(int q=1;q<=br;q++) cout<<"\n"<<setw(22)<<a[q].ime<<setw(8)<<a[q].godina<<setw(11)<<a[q].cena<<setw(8)<<a[q].km; getch(); } // Sortirane void sortIME(koli a[],int br){ koli s;int xpand; for(int q=1;q<=br;q++){xpand=q; for(int w=q;w<=br;w++) if((strcmp(a[q].ime,a[w].ime)>0)&&(strcmp(a[xpand].ime,a[w].ime)>0))xpand=w; s=a[xpand];a[xpand]=a[q];a[q]=s; } } void sortGOD(koli a[],int br){ koli s;int xpand; for(int q=1;q<=br;q++){xpand=q; for(int w=q;w<=br;w++) if((a[q].godina<a[w].godina)&&(a[xpand].godina<a[w].godina))xpand=w; s=a[xpand];a[xpand]=a[q];a[q]=s; } } void sortKM(koli a[],int br){ koli s;int xpand; for(int q=1;q<=br;q++){xpand=q; for(int w=q;w<=br;w++) if((a[q].km<a[w].km)&&(a[xpand].km<a[w].cena))xpand=w; s=a[xpand];a[xpand]=a[q];a[q]=s; } } void sortCENA(koli a[],int br){ koli s;int xpand; for(int q=1;q<=br;q++){xpand=q; for(int w=q;w<=br;w++) if((a[q].cena<a[w].cena)&&(a[xpand].cena<a[w].cena))xpand=w; s=a[xpand];a[xpand]=a[q];a[q]=s; } } // Krai sortirane // Tytsene void srchkm(koli a[],int br){ unsigned long int qq; int p=0; cout<<"Km nai mnogo->";cin>>qq; if(!cin){cout<<"Error";getch();} menu1(); for(int q=1;q<=br;q++) if(a[q].km<=qq){ cout<<"\n"<<setw(22)<<a[q].ime<<setw(8)<<a[q].godina<<setw(11)<<a[q].cena<<setw(8)<<a[q].km; p++;} if(p==0)cout<<"Nqma namereni rezulati\n"; getch(); }; void srchIME(koli a[],int br){ char z[22]; int r=0;cin.get(); cout<<"ime->";cin.getline(z,21); menu1(); for(int q=1;q<=br;q++) if(strstr(a[q].ime,z)>0){ cout<<"\n"<<setw(22)<<a[q].ime<<setw(8)<<a[q].godina<<setw(11)<<a[q].cena<<setw(8)<<a[q].km;r++;} if(r==0)cout<<"Nqma namereni rezulati\n"; getch(); }; void srchGOD(koli a[],int br){ int qq; int p=0; cout<<"Godina->";cin>>qq; if(!cin){cout<<"Error";getch();} menu1(); for(int q=1;q<=br;q++) if(a[q].godina==qq){ cout<<"\n"<<setw(22)<<a[q].ime<<setw(8)<<a[q].godina<<setw(11)<<a[q].cena<<setw(8)<<a[q].km; p++;} if(p==0)cout<<"\n Nqma namereni rezulati\n"; getch(); }; void srchCENA(koli a[],int br){ unsigned long int qq; int p=0; cout<<"Cena ( nai mnogo ) ->";cin>>qq; if(!cin){cout<<"Error";getch();} cout<<" ime "<<" godina"<<" cena km"; for(int q=1;q<=br;q++) if(a[q].cena<=qq){ cout<<"\n"<<setw(22)<<a[q].ime<<setw(8)<<a[q].godina<<setw(11)<<a[q].cena<<setw(8)<<a[q].km; p++;} if(p==0)cout<<"Nqma namereni rezulati\n"; getch(); }; //Krai Tyrsene // !-> main -!> int main(){ koli a[44]; int br=0; char menu; // !->menu do{ cout<<"\n"<<"1. Vavejdane\n"; cout<<"2.Izvejdane \n"; cout<<"3.Sortitane \n"; cout<<"4.Tyrsene \n"; cout<<"0.Exit\n"; cin>>menu; if(menu=='1')vavejdane(a,br); if(menu=='2')izvejdane(a,br); if(menu=='3') { cout<<" Sortirane \n- 1. po ime\n"; cout<<"- 2. po godina\n"; cout<<"- 3. po cena\n"; cout<<"- 4. po KM\n"; cin>>menu; if(menu=='1')sortIME(a,br); if(menu=='2')sortGOD(a,br); if(menu=='3')sortCENA(a,br); if(menu=='4')sortKM(a,br); menu=99; } if(menu=='4') { cout<<" Tyrsene \n- 1. po ime\n"; cout<<"- 2. po godina\n"; cout<<"- 3. po cena\n"; cout<<"- 4. po km\n"; cin>>menu; if(menu=='1')srchIME(a,br); if(menu=='2')srchGOD(a,br); if(menu=='3')srchCENA(a,br); if(menu=='4')srchkm(a,br); } } while(menu!='0'); return 0;} Link to comment Share on other sites More sharing options...
mme Posted January 19, 2008 Share Posted January 19, 2008 Благодаря за което. Голяма помощ... Link to comment Share on other sites More sharing options...
WriteR4e Posted October 23, 2008 Share Posted October 23, 2008 От къде мога да си изтегля библиотеки за C++ i C# ? Link to comment Share on other sites More sharing options...
djadomraz Posted October 23, 2008 Share Posted October 23, 2008 От къде мога да си изтегля библиотеки за C++ i C# ? Отвсякъде или както един приятел обича да казва - има ги във всяка добре уредена аптека. Хайде сега уточни за кои точно библиотеки говорим и изобщо за каква платформа, щото C++ има за какво ли не а C# има и за compact framework а за там са леко по-различни нещата. ето ти моето миналогодишно, с малко изменения в имената на меню-то и предполагам ще стане ............ Не искам да се заяждам но кода е под всякаква критика... верно като за студенти е добре но някоя по-сериозна и голяма програма писана по този начин може да докара този който трябва да я поддържа до самоубийство: променливите са именувани кое как дойде, кода нито е подреден нито коментиран. Изобщо всичко е колкото да не е без хич писано с желание само да тръгне и да отиде автора след тов да се напие от щастие че го е подкарал... Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.