vikipeneva Публикувано Октомври 3, 2007 Report Share Публикувано Октомври 3, 2007 (Редактиран) имам следната програма: #include <cstdlib> #include <iostream> using namespace std; int main(){ char name[20]; cout<<"Ime na produkt"<<"\n"; cin>>name; cout<<name<<"\n"; cout<<"Molq vuvedete cena:"; int cena; cin>>cena; cout<<name <<" struva :"<<cena<<endl; system("PAUSE"); return EXIT_SUCCESS; } как да направя така, че да се запаметяват някъде данните,които се въвеждат.И как да имам достъп до тях?Моля ви помогнете ми!Благодаря Редактиран Октомври 3, 2007 от IVAN Промяна на заглавието и част от правописа Цитирай Link to comment Сподели другаде More sharing options...
crio Публикувано Октомври 3, 2007 Report Share Публикувано Октомври 3, 2007 Има доста възможности за записване/четене на информацията.Аз бих предпочел база данни, но винаги можещ да използваш XML или INI файл, регистрите според мен не са добро решение за подобен тип програма... Цитирай Link to comment Сподели другаде More sharing options...
vikipeneva Публикувано Октомври 3, 2007 Author Report Share Публикувано Октомври 3, 2007 Не мога ли да го напрвя изцяло на C++,тъй като сега я уча в университета.Все още нямампознания по XML и INI file. Цитирай Link to comment Сподели другаде More sharing options...
itodorov Публикувано Октомври 4, 2007 Report Share Публикувано Октомври 4, 2007 #include <iostream> using namespace std; void menu(unsigned int& nCmd); int main() { unsigned int nCmd = 0; float cena = 0; char name[20] = ""; FILE *store; while ( true ) { menu(nCmd); system("cls"); switch (nCmd) { case 0: cout << "\nBye;-)\n" << endl; exit (0); break; case 1: cout << "Ime na produkt: "; cin.ignore(20, '\n'); cin.getline(name, 20); cout << "Molq, vuvedete cena za " << name << " : "; cin >> cena; cout << name << " struva " << cena << endl; break; case 2: if (name == "" || !cena) { cout << "Ne sa vyvedeni danni" << endl; break; } store = fopen(".\\store.txt", "w"); fprintf(store, "%s\n", name); fprintf(store, "%f\n", cena); fclose(store); cout << "Dannite sa syhraneni uspeshno.\n" << endl; break; case 3: store = fopen(".\\store.txt", "r+"); if ( NULL == store ) { cout << "Failyt ne moje da byde zareden." << endl; break; } fscanf(store, "%[^\t\n]", name); fscanf(store, "%f\n", &cena); fclose(store); cout << "Dannite sa zaredeni uspeshno.\n" << endl; cout << name << " struva " << cena << endl; break; default: break; } } return EXIT_SUCCESS; } void menu(unsigned int& nCmd) { cout << endl; cout << "--------------------------------------" << endl; cout << "MENU:" << endl; cout << "--------------------------------------" << endl << endl; cout << "(1) vyvejdane na danni ot klaviaturata" << endl; cout << "(2) syhraniavane na danni vyv fail" << endl; cout << "(3) zarejdane na danni ot fail" << endl; cout << "(0) izhod ot programata" << endl; cout << endl; cout << ": "; cin >> nCmd; } Поздрави. Цитирай Link to comment Сподели другаде More sharing options...
vikipeneva Публикувано Октомври 4, 2007 Author Report Share Публикувано Октомври 4, 2007 Много благодаря!!!Явно съм още в началото,щом някой неща не са ми познати. Имам огромното желание да науча C++ и да го практикувам лесно.Затова пак благодаря за помощта! Цитирай Link to comment Сподели другаде More sharing options...
vikipeneva Публикувано Октомври 8, 2007 Author Report Share Публикувано Октомври 8, 2007 #include <iostream> using namespace std; void menu(unsigned int& nCmd); int main() { unsigned int nCmd = 0; float cena = 0; char name[20] = ""; FILE *store; while ( true ) { menu(nCmd); system("cls"); switch (nCmd) { case 0: cout << "\nBye;-)\n" << endl; exit (0); break; case 1: cout << "Ime na produkt: "; cin.ignore(20, '\n'); cin.getline(name, 20); cout << "Molq, vuvedete cena za " << name << " : "; cin >> cena; cout << name << " struva " << cena << endl; break; case 2: if (name == "" || !cena) { cout << "Ne sa vyvedeni danni" << endl; break; } store = fopen(".\\store.txt", "w"); fprintf(store, "%s\n", name); fprintf(store, "%f\n", cena); fclose(store); cout << "Dannite sa syhraneni uspeshno.\n" << endl; break; case 3: store = fopen(".\\store.txt", "r+"); if ( NULL == store ) { cout << "Failyt ne moje da byde zareden." << endl; break; } fscanf(store, "%[^\t\n]", name); fscanf(store, "%f\n", &cena); fclose(store); cout << "Dannite sa zaredeni uspeshno.\n" << endl; cout << name << " struva " << cena << endl; break; default: break; } } return EXIT_SUCCESS; } void menu(unsigned int& nCmd) { cout << endl; cout << "--------------------------------------" << endl; cout << "MENU:" << endl; cout << "--------------------------------------" << endl << endl; cout << "(1) vyvejdane na danni ot klaviaturata" << endl; cout << "(2) syhraniavane na danni vyv fail" << endl; cout << "(3) zarejdane na danni ot fail" << endl; cout << "(0) izhod ot programata" << endl; cout << endl; cout << ": "; cin >> nCmd; } има ли начин в тази програма запаметяването на всяко едно въвеждане на продуктки да става автоматично(без да се запаметява от човек всеки път)..?да си е като вградено в програмата-щом някой въведе нещо-всичко то да се пази и да може да се отвори и видиБлагодаря предварително за помощта Успях сама да го направя да се запаметява само.Благдаря все пак.Имам друг проблем сега: има ли как този файл"store" да се отваря само ако се напише парола Всеки път след като стартирам наново програмата,предишните данни ми се изтриват от файла :"store" ....има ли начин те да се запаметяват и да си стоят винаги в този файл(и старите и новите въведени неща).Примерно да искам да погледна вчера какво съм въвеждала.???? Цитирай Link to comment Сподели другаде More sharing options...
itodorov Публикувано Октомври 8, 2007 Report Share Публикувано Октомври 8, 2007 Предполагам, нещо такова ти трябва, но преди да стартираш програмата, изтрий стария файл store.txt, ако съществува: #include <iostream> using namespace std; void menu(unsigned int& nCmd); int main() { unsigned int nCmd = 0; float cena = 0; char name[20] = ""; char pass[20] = ""; char passTmp[20] = ""; FILE *store; while ( true ) { menu(nCmd); system("cls"); switch (nCmd) { case 0: cout << "\nBye;-)\n" << endl; exit (0); break; case 1: store = fopen(".\\store.txt", "a+"); fscanf(store, "%s", pass); while ( strlen(pass) == 0) { cout << "Molia, izberete parola za zashtita na faila: (bez intervali)"; cin.ignore(20, '\n'); cin >> pass; } fprintf(store, "%s\n", pass); fclose(store); cout << "Ime na produkt: "; cin.ignore(20, '\n'); cin.getline(name, 20); cout << "Molq, vuvedete cena za " << name << " : "; cin >> cena; cout << name << " struva " << cena << endl; if (strlen(name) == 0 || !cena) { cout << "Ne sa vyvedeni danni" << endl; break; } else { store = fopen(".\\store.txt", "a"); fprintf(store, "%s\n", name); fprintf(store, "%.2f\n", cena); fclose(store); } break; case 2: store = fopen(".\\store.txt", "r"); if ( NULL == store ) { cout << "Failyt ne moje da byde zareden." << endl; break; } fscanf(store, "%s", pass); do { cout << "Failyt e zashtiten. Vyvedete parola: "; cin >> passTmp; } while ( strcmp(pass, passTmp) ); while ( true ) { if ( EOF == fscanf(store, "%s%[^\t\n]", name) ) { fclose(store); break; } else if ( EOF == fscanf(store, "%f\n", &cena) ) { fclose(store); break; } cout << name << " struva " << cena << endl; } fclose(store); break; default: break; } } return EXIT_SUCCESS; } void menu(unsigned int& nCmd) { cout << endl; cout << "--------------------------------------" << endl; cout << "MENU:" << endl; cout << "--------------------------------------" << endl << endl; cout << "(1) vyvejdane na danni ot klaviaturata" << endl; cout << "(2) zarejdane na danni ot fail" << endl; cout << "(0) izhod ot programata" << endl; cout << endl; cout << ": "; cin >> nCmd; } Поздрави. Цитирай Link to comment Сподели другаде More sharing options...
vikipeneva Публикувано Октомври 8, 2007 Author Report Share Публикувано Октомври 8, 2007 Сърдечни благодарности.Точно това трябваше да постигна,само има едно нещо още-текстовият файл "store' как да го скрия или защитя и него да не може да се трие информация оттам) ? Възможно ли е да въведа и "ден",освен продукт и цена? Цитирай Link to comment Сподели другаде More sharing options...
itodorov Публикувано Октомври 8, 2007 Report Share Публикувано Октомври 8, 2007 Разбира се, могат да бъдат добавени произволен брой стойности. Примерът само илюстрира един от начините за решаването на задачата. А що се отнася до скриването, то това може да бъде реализирано като вместо да се зарежда файла от текущата директория, потребителят бива питан от програмата кой файл (имам предвид пълен път към файл) да бъде зареден. Оттам нататък има и други възможности като криптиране на данните и т.н... Все пак, преди това опитай да поекспериментираш с вече дадения пример, просто за да усетиш кое какво е и за какво се използва. Поздрави. Цитирай Link to comment Сподели другаде More sharing options...
vikipeneva Публикувано Октомври 10, 2007 Author Report Share Публикувано Октомври 10, 2007 #include <iostream> using namespace std; void menu(unsigned int& nCmd); int main() { unsigned int nCmd = 0; float cena = 0; char name[20] = ""; char pass[20] = ""; char passTmp[20] = ""; char data[22] = ""; FILE *store; while ( true ) { menu(nCmd); system("cls"); switch (nCmd) { case 0: cout << "\nBye;-)\n" << endl; exit (0); break; case 1: store = fopen(".\\store.txt", "a+"); fscanf(store, "%s", pass); while ( strlen(pass) == 0) { cout << "Molia, izberete parola za zashtita na faila: (bez intervali)"; cin.ignore(20, '\n'); cin >> pass; } fprintf(store, "%s\n", pass); fclose(store); cout << "Den na poluchena stoka : " << data <<endl; cin >> data; cout << "Ime na produkt: "; cin.ignore(20, '\n'); cin.getline(name, 20); cout << "Molq, vuvedete cena za " << name << " : "; cin >> cena; cout <<data<<":"<< name << " struva " << cena <<"lv"<< endl; if (strlen(name) == 0 || !cena) { cout << "Ne sa vyvedeni danni" << endl; break; } else { store = fopen(".\\store.txt", "a"); fprintf(store, "%s\n", name); fprintf(store, "%.2f\n", cena); fclose(store); } break; case 2: store = fopen(".\\store.txt", "r"); if ( NULL == store ) { cout << "Failyt ne moje da byde zareden." << endl; break; } fscanf(store, "%s", pass); do { cout << "Failyt e zashtiten. Vyvedete parola: "; cin >> passTmp; } while ( strcmp(pass, passTmp) ); while ( true ) { if ( EOF == fscanf(store, "%s%[^\t\n]", name) ) { fclose(store); break; } else if ( EOF == fscanf(store, "%f\n", &cena) ) { fclose(store); break; } cout <<data <<"-"<< name << " struva " << cena <<"lv"<< endl; } fclose(store); break; default: break; } } return EXIT_SUCCESS; } void menu(unsigned int& nCmd) { cout << endl; cout << "--------------------------------------" << endl; cout << "MENU:" << endl; cout << "--------------------------------------" << endl << endl; cout << "(1) vyvejdane na danni ot klaviaturata" << endl; cout << "(2) zarejdane na danni ot fail" << endl; cout << "(0) izhod ot programata" << endl; cout << endl; cout << ": "; cin >> nCmd; } Стигнах дотам,че да мога да въведа от клавиатурата "ден",след това да ми излезе на екрана денят,обаче не мога да направя така че този "ден" да се запаметява и да излиза от запаметените данни,заедно с ""продукта" и "цената" Цитирай Link to comment Сподели другаде More sharing options...
itodorov Публикувано Октомври 11, 2007 Report Share Публикувано Октомври 11, 2007 За да съхраниш въведената дата е необходимо да добавиш следното: fprintf(store, "%s\n", data); Непосредствено преди: fprintf(store, "%s\n", name); fprintf(store, "%.2f\n", cena); А за да бъде прочетена от файла по-късно, постави следния фрагмент: if ( EOF == fscanf(store, "%s", data) ) { fclose(store); break; } непосредствено преди if ( EOF == fscanf(store, "%s%[^\t\n]", name) ) { fclose(store); break; } else if ( EOF == fscanf(store, "%f\n", &cena) ) { fclose(store); break; Отново, както и преди, необходимо е да започнеш с нов файл "store.txt", тъй като старият ще има различна структура. Поздрави. Цитирай Link to comment Сподели другаде More sharing options...
Препоръчан пост
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.