powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите с циклом, пожалуйста
11 сообщений из 11, страница 1 из 1
Помогите с циклом, пожалуйста
    #33081493
Marusia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НЕ поможите с циклом?-есть база данных,где 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();
}
...
Рейтинг: 0 / 0
Помогите с циклом, пожалуйста
    #33081503
Фотография rrrrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, чтобы голову не сломать, отформатируем сначала :)
Код: 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.
# 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();
}
...
Рейтинг: 0 / 0
Помогите с циклом, пожалуйста
    #33081552
Marusia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня выдает материалы -но не те ,которые нужны -может нужен совсем другой цикл?
...
Рейтинг: 0 / 0
Помогите с циклом, пожалуйста
    #33081641
fixit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
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;

for (int i= 0 ;i<count;i++)
{
  ff>>rrr;
  if ( sred > rrr.plan )
    rrr.PrnRec();
}

}
...
Рейтинг: 0 / 0
Помогите с циклом, пожалуйста
    #33081790
Marusia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так я пробовала -он мне правильно считает среднее-но вот это

for (int i=0;i<count;i++)
{
ff>>rrr;
if ( sred > rrr.plan )
rrr.PrnRec();
}

неправильно и не работает-он мне выдает просто последнюю запись в базе данных-мне кажется нужно уйти от rrr.plan -но как?
...
Рейтинг: 0 / 0
Помогите с циклом, пожалуйста
    #33081980
Marusia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неужели никто не догадывается как организовать этот цикл-он вроде несложный (правда я не могу догадаться)???????Эх не идет крученый пас
...
Рейтинг: 0 / 0
Помогите с циклом, пожалуйста
    #33082218
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MarusiaНеужели никто не догадывается как организовать этот цикл-он вроде несложный (правда я не могу догадаться)???????Эх не идет крученый пас
Ну так подумай хорошенько :)
Одно только могу сказать: цикл правильный. Надо только ПЕРЕД циклом поставить указатель на начало файла (по другому говоря: вновь перейти к началу файла)...
...
Рейтинг: 0 / 0
Помогите с циклом, пожалуйста
    #33082271
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();
}
...
Рейтинг: 0 / 0
Помогите с циклом, пожалуйста
    #33082503
Marusia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Больше ни у кого не найдется предложения по исправлению???Эх .......курсовик пропадает
...
Рейтинг: 0 / 0
Помогите с циклом, пожалуйста
    #33083087
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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();
}

С тебяпричитается: всем участвовавшим в решении - по шоколадке (можно лично, можно по почте...)
...
Рейтинг: 0 / 0
Помогите с циклом, пожалуйста
    #33083396
Marusia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, к сожалению, я ненастолько знакома с потоками С++ и системой ввода-вывода, так что я бы мучилась и мучилась-а теперь ,благодаря вам всем, сегодня сдам курсовую!!!
Спасибо-вы меня так все выручили!!!!!!!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите с циклом, пожалуйста
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]