Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2015, 13:21   #1
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию код программы среднемесячная температура C++

Код:
#include <DateUtils.hpp>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int GetString(int f, Ansistring *st); //E2303 Type name expected
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
	ComboBox1->Style = csDropDownList;
	ComboBox1->Items->Add("Январь");
	ComboBox1->Items->Add("Февраль");
	ComboBox1->Items->Add("Март");
	ComboBox1->Items->Add("Апрель");
	ComboBox1->Items->Add("Май");
	ComboBox1->Items->Add("Июнь");
	ComboBox1->Items->Add("Июль");
	ComboBox1->Items->Add("Август");
	ComboBox1->Items->Add("Сентябрь");
	ComboBox1->Items->Add("Октябрь");
	ComboBox1->Items->Add("Ноябрь");
	ComboBox1->Items->Add("Декабрь");
	ComboBox1->ItemIndex = MonthOf ( Now() - 1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int h;
h = FileOpen ("meteo.txt",fmOpenRead);
if (h == -1) {
	  ShowMessage ("Файл не найден");
	  return;
}
  Memo1->Lines->Clear();

AnsiString st;
int ls;

TDataTime aDate; //E2451 Undefined symbol "TDataTime" +
// E2379 Statement missing ;
float temp;
int nMonth;

int n = 0;
float summ = 0;
float srad;

AnsiString buf;
do {
  ls = GetString(h,&st);// E2268 Call to undefinite function 'GetString'
	if (ls != 0 ) {
	nMonth = MonthOf (StrToDate(st))-1);
	buf = st;
  ls = GetString(h,&st);
 float	temp = StrToFloat(st);
if (nMonth == ComboBox1->ItemIndex) {
n++;
summ = summ + temp;
buf = buf + "   " +st;
Memo1->Lines->Add(buf);
}
	}
}
while (ls != 0 ){
 FileClose(h);
 if (n!=0) {
  sred = summ/n;
  Label1->Caption = "Среднее значение: " + FloatToStrF( sred,ffGeneral,3,2);
 }
  else

  Label1->Caption = "В БД нет информации о температуре за " + ComboBox1->Text;
 }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
Label1->Caption = "...";
Memo1->Text = "";
}
//---------------------------------------------------------------------------
int GetStirng (int f, AnsiStirng *st)
{
	unsigned char buf[256];
	unsigned char *p = buf;

	int n ;
	int len =0;
do
n = FileOpen (f,p,1);
while ((n != 0) && ( *p != ' '));
while ((n != 0) && ( *p != ' ')
{
   if (*p == '\r') {
   n = FileRear(f,p,1);
   break;
   }
len ++;
p++;
n = FileRead(f,p,1);
}
*p = '\0';
if (len != 0) {
st->printf ("%s",buf);
return len;
}
}
Пример из книги не компилируется, подскажите что не так в коде.
Текст ошибок в виде комментариев в коде.

Последний раз редактировалось Dima-91; 02.08.2015 в 13:51.
Dima-91 вне форума Ответить с цитированием
Старый 02.08.2015, 13:34   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Что не так мы узнаем тогда, когда ты всетки рассекретишь тайну катастрофы боинга... ой! Летепатор слома...слом... сло... Теле... Пато... р...
?%:;:%4?%;67%(У:?(ПИм674р87...
Раз раз... Проверка.
Итак Когда, ты рассекретишь тайну Перевала Дятло... Опять не то...
Видишь как телепатор глючить может? Современные телепаторы ужасно работают, если ТС тексты ошибок им не заряжает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.08.2015, 16:25   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Тогда он должен будет тебя шлёпнуть, кацапский ты шпыгун! :D

В огороде - Бузина, в Киеве - ... нету Бузины... :D
за чернуху - звиняйте.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось Stilet; 02.08.2015 в 17:17.
min@y™ вне форума Ответить с цитированием
Старый 02.08.2015, 16:43   #4
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Подправил, чтоб ошибки не выдавались:

Код:
TForm1 *Form1;

int GetString(int f, AnsiString *st);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
	ComboBox1->Style = csDropDownList;
	ComboBox1->Items->Add("Январь");
	ComboBox1->Items->Add("Февраль");
	ComboBox1->Items->Add("Март");
	ComboBox1->Items->Add("Апрель");
	ComboBox1->Items->Add("Май");
	ComboBox1->Items->Add("Июнь");
	ComboBox1->Items->Add("Июль");
	ComboBox1->Items->Add("Август");
	ComboBox1->Items->Add("Сентябрь");
	ComboBox1->Items->Add("Октябрь");
	ComboBox1->Items->Add("Ноябрь");
	ComboBox1->Items->Add("Декабрь");
	ComboBox1->ItemIndex = MonthOf ( Now() - 1);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
        int h;
        h = FileOpen ("meteo.txt",fmOpenRead);
        if (h == -1) {
	        ShowMessage ("Файл не найден");
                return;
        }
        Memo1->Lines->Clear();

        AnsiString st;
        int ls;

        TDateTime aDate;
        float temp;
        int nMonth;

        int n = 0;
        float summ = 0;
        float sred;

        AnsiString buf;
        do{
                ls = GetString(h,&st);
	        if (ls != 0 ) {
	                nMonth = MonthOf(StrToDate(st)-1);
                	buf = st;
                        ls = GetString(h,&st);
                        float temp = StrToFloat(st);
                        if (nMonth == ComboBox1->ItemIndex) {
                                n++;
                                summ = summ + temp;
                                buf = buf + "   " +st;
                                Memo1->Lines->Add(buf);
                        }
        	}
        }while(ls != 0);

        FileClose(h);
        if (n!=0) {
                sred = summ/n;
                Label1->Caption = "Среднее значение: " + FloatToStrF( sred,ffGeneral,3,2);
        }
        else
                Label1->Caption = "В БД нет информации о температуре за " + ComboBox1->Text;

}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
        Label1->Caption = "...";
        Memo1->Text = "";
}
//---------------------------------------------------------------------------
int GetString(int f, AnsiString *st)
{
	unsigned char buf[256];
	unsigned char *p = buf;

	int n;
	int len = 0;
//        do
//                n = FileOpen(f,p,1);
//        while ((n != 0) && ( *p != ' '));

        while ((n != 0) && ( *p != ' ' ))
        {
                if (*p == '\r') {
                        n = FileRead(f,p,1);
                        break;
                }
                len ++;
                p++;
                n = FileRead(f,p,1);
        }
        *p = '\0';
        if (len != 0) {
                st->printf ("%s",buf);
                return len;
        }
}
Закомментировал кусок кода в функции GetString, возможно там вместо FileOpen должно быть FileRead.

И в .h пропишите:
#include <DateUtils.hpp>

Работоспособность не проверял.

А из какой книги Вы берете такие тексты программ, что там полно ошибок? Пишите кусками и сразу исправляйте ошибки.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 02.08.2015, 17:18   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Тогда он должен будет тебя шлёпнуть, кацапский ты шпыгун!
Во-первых: не кацапский а хохлядский.
Во-вторых: Тех, кто хочет шлепнуть - милости просим. Пусть приезжают. Их тут кровавые правосеки уже ждут.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.08.2015, 21:41   #6
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Цитата:
Сообщение от Krasiosoft Посмотреть сообщение
А из какой книги Вы берете такие тексты программ, что там полно ошибок? Пишите кусками и сразу исправляйте ошибки.
C++ В примерах и задачах , автор Никита Культин, 2005 год.
Делаю пример, если возникают проблемы или вопросы спрашиваю на форуме...

Последний раз редактировалось Dima-91; 02.08.2015 в 21:43.
Dima-91 вне форума Ответить с цитированием
Старый 02.08.2015, 21:58   #7
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Просто весьма странные ошибки выходят:
Код:
int GetString(int f, Ansistring *st);  // писать нужно AnsiString
TDataTime aDate;  //  надо было подключить DateUtils.hpp
nMonth = MonthOf (StrToDate(st))-1);  //  лишняя скобка
float srad;  //  вроде должно быть sred
int GetStirng (int f, AnsiStirng *st){...}  //  название функции было GetStirng, а не GetString
И вроде в функции GetString перепутано FileOpen с FileRead.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 02.08.2015, 22:04   #8
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Код:
TForm1 *Form1;
int GetString(int f, AnsiString *st);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
	ComboBox1->Style = csDropDownList;
	ComboBox1->Items->Add("Январь");
	ComboBox1->Items->Add("Февраль");
	ComboBox1->Items->Add("Март");
	ComboBox1->Items->Add("Апрель");
	ComboBox1->Items->Add("Май");
	ComboBox1->Items->Add("Июнь");
	ComboBox1->Items->Add("Июль");
	ComboBox1->Items->Add("Август");
	ComboBox1->Items->Add("Сентябрь");
	ComboBox1->Items->Add("Октябрь");
	ComboBox1->Items->Add("Ноябрь");
	ComboBox1->Items->Add("Декабрь");
	ComboBox1->ItemIndex = MonthOf ( Now() - 1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
	int h;
	h = FileOpen ("meteo.txt",fmOpenRead);
	if (h == -1) {
	  ShowMessage ("Файл не найден");
	  return;
}
	Memo1->Lines->Clear();

	AnsiString st;
	int ls;

	TDateTime aDate;
	float temp;
	int nMonth;

	int n = 0;
	float summ = 0;
	float sred;

	AnsiString buf;
	do {
		ls = GetString(h,&st);// E2268 Call to undefinite function 'GetString'
		if (ls != 0 ) {
			nMonth = MonthOf (StrToDate(st))-1);// E2379 Statement missing ;
			buf = st;
			ls = GetString(h,&st);
			temp = StrToFloat(st);
			if (nMonth == ComboBox1->ItemIndex) {
				n++;
				summ = summ + temp;
				buf = buf + "   " +st;
				Memo1->Lines->Add(buf);
			}}}
	while (ls != 0 )// E2378 Do-while statement missing ;
{
		FileClose(h);
		if (n!=0) {
			sred = summ/n;
		Label1->Caption = "Среднее значение: " + FloatToStrF( sred,ffGeneral,3,2);
 }
		else
  Label1->Caption = "В БД нет информации о температуре за " + ComboBox1->Text;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
	Label1->Caption = "...";
	Memo1->Text = "";
}
//---------------------------------------------------------------------------
int GetStirng (int f, AnsiStirng *st)
{
	unsigned char buf[256];
	unsigned char *p = buf;

	int n ;
	int len =0;
	do
	n = FileOpen (f,p,1);
	//while ((n != 0) && ( *p != ' '));
	while ((n != 0) && ( *p != ' ')
	{
	if (*p == '\r') {
	n = FileRear(f,p,1);
	 break;
   }
	len ++;
	p++;
	n = FileRead(f,p,1);
}
	*p = '\0';
	if (len != 0) {
	st->printf ("%s",buf);
	return len;
}
}
Ошибки остались, но пару получилось убрать, не правильно было прописано TDateTime aDate...

Последний раз редактировалось Dima-91; 03.08.2015 в 08:29.
Dima-91 вне форума Ответить с цитированием
Старый 02.08.2015, 22:29   #9
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Я же все ошибки исправил в 4 посту.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 03.08.2015, 08:46   #10
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Цитата:
Сообщение от Krasiosoft Посмотреть сообщение
Я же все ошибки исправил в 4 посту.
Почему после
Код:
while (ls != 0 ) ;
точка запятой ставиться?
Спасибо за помощь.

Последний раз редактировалось Dima-91; 03.08.2015 в 09:09.
Dima-91 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL код в код программы Vladsuperklas БД в Delphi 2 21.05.2015 20:06
Температура ЦП sew960i Компьютерное железо 6 21.12.2012 23:31
КОД ПРОГРАММЫ!!! Ислам Помощь студентам 9 26.02.2011 21:36
Код программы Gamst Общие вопросы Delphi 7 25.05.2010 14:58
Код программы sss-777 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 14.05.2010 12:12