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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2014, 19:36   #1
нуб7
Пользователь
 
Регистрация: 22.10.2014
Сообщений: 13
Вопрос Нужно отредактировать код,привести его к рабочему виду. Работа с классами( Делфи ХЕ5)

Код:
program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

const s:string='12+456';
type MyClass = class
    Number1,Number2:integer;
    Operation:char;
    procedure Opredelenie(a:string);
    function Rastshet():integer;
end;
procedure MyClass.Opredelenie;
    var i,n:integer; buf:string;
begin
    n:=length(a);
    for i:=1 to n do
begin
    if ord(a[i]) in [48..57] then buf:=buf+a[i] else break;
end;
    Number1:=strtoint(buf);
    delete(a,1,length(buf));
    buf:='';
    Operation:=Chr(Ord(a[1]));
    delete(a,1,1);
    Number2:=StrToInt(a);
end;
function MyClass.Rastshet;
begin
    case Operation of
    '+':Rastshet:=Number1+Number2;
    '-':Rastshet:=Number1-Number2;
end;
end;
    var MC:MyClass;
begin
    writeln('Stroka s: ',s);
    MC.Opredelenie(s);
    writeln('Rezultat: ',s,' = ',MC.Rastshet);
end.
Само задание: На основе строки вида 12+456 создать класс с полями Number1:integer; Number2:integer; Operation:char; Написать в классе функцию,вычисляющую результат операции и показать результат ее выполнения на экране. Кто поможет?

From Stilet: Я поправил оформление.

Последний раз редактировалось Stilet; 23.10.2014 в 19:55.
нуб7 вне форума Ответить с цитированием
Старый 23.10.2014, 19:52   #2
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

Проформатированиекодаслышал?
indexx вне форума Ответить с цитированием
Старый 23.10.2014, 19:55   #3
нуб7
Пользователь
 
Регистрация: 22.10.2014
Сообщений: 13
По умолчанию

Цитата:
Сообщение от indexx Посмотреть сообщение
Проформатированиекодаслышал?
нетнеслышал.
нуб7 вне форума Ответить с цитированием
Старый 23.10.2014, 19:55   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Кто поможет?
Что, предидущая тема оказалась успешно забита по студентским канонам?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2014, 19:58   #5
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

Ну так послушай. Или точнее почитай
http://citforum.ru/programming/delphi/style_delphi/
indexx вне форума Ответить с цитированием
Старый 23.10.2014, 19:58   #6
нуб7
Пользователь
 
Регистрация: 22.10.2014
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Что, предидущая тема оказалась успешно забита по студентским канонам?
не прокатило..
нуб7 вне форума Ответить с цитированием
Старый 23.10.2014, 20:09   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Почему думаешь что эта тема чем-то отличается?
Ответы будут те же самые.
Хотя все равно не поймешь... Ну да ладно. Рассказывай что именно не так в программе )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2014, 20:21   #8
нуб7
Пользователь
 
Регистрация: 22.10.2014
Сообщений: 13
По умолчанию

Проект не запускается: выдает ошибку и просит закрыть программу. Препод сказал,что ошибка простая. Никто из одногруппников так и не понял, в чем дело. А сам я нифига не понимаю в программировании.
Изображения
Тип файла: jpg rS289ZcqfgY.jpg (55.4 Кб, 41 просмотров)
нуб7 вне форума Ответить с цитированием
Старый 23.10.2014, 21:14   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Никто из одногруппников так и не понял, в чем дело.
Отвечает Олександер Грусть:
Код:
 
begin
    writeln('Stroka s: ',s);
    With MyClass.Create do begin 
      Opredelenie(s);
      writeln('Rezultat: ',s,' = ',Rastshet);
      Free;
    end;
end.
Готовь сову.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2014, 21:38   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

дополню ответ Олександра Грустя вариантом с использанием переменной - экземляра класса:
Код:
var 
  MC : MyClass;
begin
   writeln('Stroka s: ',s);

   MC := MyClass.Create; // вы забыли создать объект

   MC.Opredelenie(s);
   writeln('Rezultat: ',s,' = ',MC.Rastshet);
   MC.Free; 
end.

а ещё нужно обязательно иницилизировать пустой строкой переменную buf:
Код:
    var i,n:integer; buf:string;
begin
    n:=length(a);
    buf := '';
    for i:=1 to n do

если совы закончились, то мне хотя бы хрустального попугая..

Последний раз редактировалось Serge_Bliznykov; 23.10.2014 в 21:41.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Привести к треугольному виду(процедуры) komjkee Паскаль, Turbo Pascal, PascalABC.NET 0 18.12.2013 21:35
Привести систему к треугольному виду MrDelni Помощь студентам 1 25.03.2013 17:05
Задача: привести систему к треугольному виду limaxY Помощь студентам 1 07.06.2011 08:50
Как привести к виду для счета? Диагностик Microsoft Office Excel 11 10.04.2009 14:57
Как привести числа к другому виду Людмилка Microsoft Office Excel 1 18.11.2008 10:19