Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Вопросы начинающих программистов
Перезагрузить страницу паскаль и турбо паскаль
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Евгения Б. Евгения Б. вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.05.2011
По умолчанию паскаль и турбо паскаль - 05.05.2011, 15:21

помогите решить 2 задачи

1.задан массив натуральных чисел размером 30 элементов опишите на русском или одном из языков программирования алгоритм получения из него другого массива. который будет содержать факториалы значений элементов первого массива, но выстроенных в обратном порядке

2.на входе программе подается последовательность символов, состоящая из букв латинского алфавита и цифр. ввод символов заканчивается точкой.
требуется написать как можно более эффективную программу, которая состоит из всех цифр, встретившихся в строке и не равных нулю, формирует наименьшее число (без повторов) и выводит на экран число, равное синусу полученного числа. если таких цифр нет, то программа выводит нуль.
пусть, например, на входе программе поданы следующие символы: a1ab1ac1ad2ae4r4
в данном случае программа должна вывести sin(124)=-0,995686
Ответить с цитированием
  (#2 (permalink)) Старый
Feanor Feanor вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.07.2012
По умолчанию 15.07.2012, 18:05

у меня сейчас такая же задача, не могу доразобраться, написал вот такую вот программку
delphi Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Edit1: TEdit;
    procedure Memo1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
const
a=['1'..'9'];
var S:String;
    b:array[1..999999] of string;
    i,j,Len,ch:integer;
begin
b[1]:='0';
S:= Memo1.Text;
Len := Length(S);
ch:=0;
if Key in ['?'] then
for i:= 1 to Len do begin
for j:= 1 to 999999 do begin
if (s[i] in a) and (s[i] in b[j])  then begin
b[j+1]:=b[j]+s[i];
ch:=ch*10+ord(s[i])-ord('0');
end;
edit1.Text:= IntToStr(ch);
end;
end;
end;
end.
но выдает [Error] Unit1.pas(42): Operator not applicable to this operand type
указывая на (s[i] in b[j])
кто-нибудь может помочь?
Ответить с цитированием
  (#3 (permalink)) Старый
Feanor Feanor вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.07.2012
По умолчанию 15.07.2012, 23:18

все переделал с нуля, сообразил по другому и получилось, если в будущем кому пригодится, то вот, код прилагается:
delphi Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, Buttons, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    SBQuit: TSpeedButton;
    SBOpen: TSpeedButton;
    SBSave: TSpeedButton;
    ODText: TOpenDialog;
    SDText: TSaveDialog;
    CBChar: TCheckBox;
    MText: TMemo;
    Edit1: TEdit;
    procedure SBOpenClick(Sender: TObject);
    procedure SBQuitClick(Sender: TObject);
    procedure SBSaveClick(Sender: TObject);
    procedure MTextKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.SBOpenClick(Sender: TObject);  //процедура открытия файла .txt
var
    F   :   TextFile;
    C   :   Char;
    W   :   Word;
begin
If ODText.Execute then
    begin
            MText.Clear;
        AssignFile(F,ODText.FileName);
        {$I-}
            reset(F);
        {$I+}
            If IOResult = 0 then
        begin
            Form1.Caption := ODText.FileName;
            W := 0;
            If CBChar.Checked then
            begin
                while Not EOF(F) do
                begin
                        MText.Lines.Add('');
                    While Not EOLn(F) do
                    begin
                            read(F,C);
                            MText.Lines[W]:=MText.Lines[W]+C;
                    end;
                    Inc(W);
                    readln(F);
                    end;
            end
            else
            begin
                MText.Lines.LoadFromFile(ODText.FileName);
            end;
            CloseFile(F);
            end
        else
            ShowMessage('Ошибка открытия файла '+ODText.FileName);
    end;
end;
procedure TForm1.SBQuitClick(Sender: TObject); //процедура закрытия программы
begin
close;
end;

procedure TForm1.SBSaveClick(Sender: TObject); //процедура сохранения текста в файл .txt
begin
If SDText.Execute then
begin
    Mtext.Lines.SaveToFile(SDText.FileName);
    Form1.Caption := SDText.FileName;
end;

end;

Function DeleteRepeatChar(s:string):string;
var buf:string;
begin
while length(s)<>0 do // пока строка s не пустая
begin
buf:=buf+s[1]; // забираем из нее 1 символ
while pos(buf[length(buf)],s)<>0 do delete(s,pos(buf[length(buf)],s),1); // и удаляем все его вхождения
end;
DeleteRepeatChar:=buf;
end;


procedure TForm1.MTextKeyPress(Sender: TObject; var Key: Char);
const
a=['1'..'9']; //указываем границы вхождения в массив(чтобы отбирать из символов цифры)
Digit: Set of Char=['0' .. '9','a'..'z','A'..'Z','?', '-',#32,#16,#8,#17,#13]; //указываем возможные для ввода символы
var S,d:String;
    i,j,ch:integer;
begin
if not (Key in Digit) then //если прожимается неразрешённая клавиша, то она не вводится
 Key:=#0;
S:= MText.Text;
ch:=0;
if Key in ['?'] then            //если вводится знак ? то начинается выполнение программы
for i:= 1 to Length(S) do begin  //для i от одного до конечного символа
if (s[i] in a) then begin        //если символ явл-ся цифрой, то он проходит
ch:=ch*10+ord(s[i])-ord('0');    //прибавляется цифра к числу
end;
d:= DeleteRepeatChar(IntToStr(ch));        //из числа удаляются повторяющиеся символы
edit1.Text:= FloatToStr(sin(StrToFloat(d))); //считается символ полученного числа и выводится в однострочный текстовый редактор
end;
end;
end.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что не так ?... :( (Паскаль) Fantomasw Вопросы начинающих программистов 4 21.01.2012 22:50
помогите решить задание по программированию (турбо паскаль)) _Alex_ Любые вопросы от новичков 0 18.12.2011 20:38
турбо паскаль aleksskay Вопросы начинающих программистов 1 12.08.2011 08:53
Паскаль турбо помогите ПЛИЗЗЗЗ AlinkaGrazia Pascal 0 28.05.2011 19:26
Дан файл словарь. Написать функцию, возвращающую слова заданной длины (турбо паскаль) Андрюня Pascal 0 16.05.2011 11:43
Из СИ в паскаль reaction Pascal 0 06.05.2011 21:43
паскаль Aktor1992 Pascal 0 12.04.2011 21:26
ТУРБО ПАСКАЛЬ Umbrella Pascal 2 08.06.2010 13:03
Паскаль лиахиМ Pascal 2 07.05.2010 22:57
Напишу программу на С++, BuilderC++, Турбо Паскаль, Java. Artem2006 Работа 1 02.08.2006 18:58
Обязательно учить турбо паскаль для того чтобы программировать unreal Pascal 9 04.08.2005 13:50
Паскаль и VB Anonymous Visual Basic 1 23.11.2003 22:21



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов