|
|
|
Помогите с циклом, пожалуйста
|
|||
|---|---|---|---|
|
#18+
НЕ поможите с циклом?-есть база данных,где count -количество записей в ней,в ней есть колонка с плановым выпуском (plan) материала и необходимо напечатать справку о материалах, выпуск которых меньше среднего выпуска по всем записям вот мой цикл(не идет) # include <iostream.h> # include <conio.h> # include <iomanip.h> # include <stdio.h> # include <string.h> # include <stdlib.h> # include <fstream.h> const int M=20,K=4; class TRec { friend class TFile; int shifr;//shifr materiala char naim[M];//naimenovanie materiala float price;//cena materiala za 1 edenicy float kol[K];//kolichestvo na edenicy kazdogo iz K naimenovanii prodykcii int plan;//planiryemoe kolichestvo vipyska int factvip;//fakticheskii vipysk v % public: void Shapka();//pechat shapki tablici void PrnRec();//obecpechenie formatirovannogo vivoda dannix friend istream & operator >> (istream & is,TRec & r);//peregruzka operatora >> friend ostream & operator << (ostream & os,TRec r);//peregruzka operatora << }; void TRec::Shapka() { cout <<"shifr"<<" "<<"naimenovanie"<<" "<<" "<<"cena "<<" "<<" "<<"plan vipyska"<<" "<<" "<<"fakticheskii vipysk v %"<<endl; cout <<"kol-vo dlia prodykcii"<<endl; } istream & operator >> (istream & is,TRec & r) { is>>r.shifr>>r.naim>>r.price>>r.plan>>r.factvip; for (int i=0;i<K;i++) is>>r.kol ; return is; } ostream & operator << (ostream & os,TRec r) { os<<r.shifr<<" "<<r.naim<<" "<<r.price<<" "<<r.plan<<" "<<r.factvip<<endl; for (int i=0;i<K;i++) os<<r.kol<<endl; return os; } void TRec::PrnRec() { cout<<setw(3)<<shifr<<setw(10)<<naim<<setw(12)<<setprecision(5)<<price<<setw(10)<<plan<<setw(17)<<factvip<<endl; for (int i=0;i<K;i++) cout <<setw(5)<<setprecision(5)<<kol; cout <<endl ; } ------------------------------------------------------------------------------------------------------------------ /------------------------------------------------------------------------------ //Napechatat spravky o materialax, vipysk kotorix mensche srednego vipyska void TFile::obr1() { cout<<"spravka o materialax, vipysk kotorix mensche srednego vipyska"<<endl; rrr.Shapka(); ifstream ff(f_name); ff>>count; float sred;//Srednii vipysk po vsei prodykcii sred=0; for (int i=0;i<count;i++) { ff>>rrr; sred+=rrr.plan; } sred/=count; do { rrr.PrnRec(); } while (sred>rrr.plan); ff.close(); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2005, 10:49 |
|
||
|
Помогите с циклом, пожалуйста
|
|||
|---|---|---|---|
|
#18+
Так, чтобы голову не сломать, отформатируем сначала :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2005, 10:51 |
|
||
|
Помогите с циклом, пожалуйста
|
|||
|---|---|---|---|
|
#18+
У меня выдает материалы -но не те ,которые нужны -может нужен совсем другой цикл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2005, 11:09 |
|
||
|
Помогите с циклом, пожалуйста
|
|||
|---|---|---|---|
|
#18+
MarusiaУ меня выдает материалы -но не те ,которые нужны -может нужен совсем другой цикл? не вдаваясь в подробности, примерно будет так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2005, 11:41 |
|
||
|
Помогите с циклом, пожалуйста
|
|||
|---|---|---|---|
|
#18+
Так я пробовала -он мне правильно считает среднее-но вот это for (int i=0;i<count;i++) { ff>>rrr; if ( sred > rrr.plan ) rrr.PrnRec(); } неправильно и не работает-он мне выдает просто последнюю запись в базе данных-мне кажется нужно уйти от rrr.plan -но как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2005, 12:20 |
|
||
|
Помогите с циклом, пожалуйста
|
|||
|---|---|---|---|
|
#18+
Неужели никто не догадывается как организовать этот цикл-он вроде несложный (правда я не могу догадаться)???????Эх не идет крученый пас ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2005, 13:11 |
|
||
|
Помогите с циклом, пожалуйста
|
|||
|---|---|---|---|
|
#18+
MarusiaНеужели никто не догадывается как организовать этот цикл-он вроде несложный (правда я не могу догадаться)???????Эх не идет крученый пас Ну так подумай хорошенько :) Одно только могу сказать: цикл правильный. Надо только ПЕРЕД циклом поставить указатель на начало файла (по другому говоря: вновь перейти к началу файла)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2005, 14:29 |
|
||
|
Помогите с циклом, пожалуйста
|
|||
|---|---|---|---|
|
#18+
вот так что ли?Ну так тоже ничего не выдает //Napechatat spravky o materialax, vipysk kotorix mensche srednego vipyska void TFile::obr1() { cout<<"spravka o materialax, vipysk kotorix mensche srednego vipyska"<<endl; ifstream ff(f_name); ff>>count; float sred;//Srednii vipysk po vsei prodykcii sred=0; for (int i=0;i<count;i++) { ff>>rrr; sred+=rrr.plan; } sred/=count; cout<<"srednii vipysk po vsem materialam "<<sred<<endl; ff.seekg(0,ios::beg); for (int i=0;i<count;i++) { if (sred>rrr.plan) {rrr.Shapka(); rrr.PrnRec();} } ff.close(); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2005, 14:49 |
|
||
|
Помогите с циклом, пожалуйста
|
|||
|---|---|---|---|
|
#18+
Больше ни у кого не найдется предложения по исправлению???Эх .......курсовик пропадает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2005, 16:53 |
|
||
|
Помогите с циклом, пожалуйста
|
|||
|---|---|---|---|
|
#18+
Marusiaвот так что ли?Ну так тоже ничего не выдает //Napechatat spravky o materialax, vipysk kotorix mensche srednego vipyska void TFile::obr1() { cout<<"spravka o materialax, vipysk kotorix mensche srednego vipyska"<<endl; ifstream ff(f_name); ff>>count; float sred;//Srednii vipysk po vsei prodykcii sred=0; for (int i=0;i<count;i++) { ff>>rrr; sred+=rrr.plan; } sred/=count; cout<<"srednii vipysk po vsem materialam "<<sred<<endl; ff.seekg(0,ios::beg); for (int i=0;i<count;i++) { if (sred>rrr.plan) {rrr.Shapka(); rrr.PrnRec();} } ff.close(); } Почти, но не совсем... Я так понял, что в самом начале файла идут сведения о количестве записей, а дальше сами записи. Поэтому указатель надо возвращать не не самое начало файла, а на НАЧАЛО ЗАПИСЕЙ С ДАННЫМИ. Т.е. твой фрагмент может выглядеть так(все мои изменения выделены жирным): //Napechatat spravky o materialax, vipysk kotorix mensche srednego vipyska void TFile::obr1() { cout<<"spravka o materialax, vipysk kotorix mensche srednego vipyska"<<endl; ifstream ff(f_name); ff>>count; streampos pos=ff.tellg(); float sred;//Srednii vipysk po vsei prodykcii sred=0; for (int i=0;i<count;i++) { ff>>rrr; sred+=rrr.plan; } sred/=count; cout<<"srednii vipysk po vsem materialam "<<sred<<endl; ff.seekg(pos); for (int i=0;i<count;i++) { ff>>rrr; if (sred>rrr.plan) {rrr.Shapka(); rrr.PrnRec();} } ff.close(); } С тебяпричитается: всем участвовавшим в решении - по шоколадке (можно лично, можно по почте...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2005, 06:33 |
|
||
|
Помогите с циклом, пожалуйста
|
|||
|---|---|---|---|
|
#18+
Да, к сожалению, я ненастолько знакома с потоками С++ и системой ввода-вывода, так что я бы мучилась и мучилась-а теперь ,благодаря вам всем, сегодня сдам курсовую!!! Спасибо-вы меня так все выручили!!!!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2005, 10:58 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=404&tid=2033253]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 212ms |
| total: | 354ms |

| 0 / 0 |
