57 / 9 / 2
Регистрация: 16.11.2011
Сообщений: 66
1

массивы, обработка символьных и строковых данных, процедуры и фукции

29.11.2011, 21:58. Показов 1973. Ответов 12
Метки нет (Все метки)

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

Задача 4
Даны целые числа а1,...,а30. Пусть М -наибольшее, а N-наименьшее из а1,...,а30. Получить в порядке возрастания все целые числа из интервала (N,M),которые не входят в последовательность а1,...,а30.

Задача 5
Описать процедуру ,которая для трех чисел a,b,c осуществляет перераспределение значений по правилу a>=b>=c.

Задача 6

Даны натуральное число n, символы S1,...,Sn. Изменить последовательность S1,...,Sn, заменив в ней каждую точку на многоточие.

Задача 7
Дан файл f, компоненты которого являются целыми числами. Найти количество четных чисел среди компонент, количество квадратов нечетных чисел среди компонентов файла.

Добавлено через 13 часов 57 минут
Задача 4
Delphi
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
82
83
84
85
86
87
88
89
90
91
92
93
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, ExtCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    StringGrid1: TStringGrid;
    Button2: TButton;
    Memo1: TMemo;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
 
    end;
 
 
var
  Form1: TForm1;
  A:Array[1..200,1..200] Of Integer;
 
implementation
 {$R *.dfm}
 
 
 
 
 
 
procedure TForm1.Button1Click(Sender: TObject);
 
Var
  i,j:Integer;
Begin
  Randomize;
  StringGrid1.RowCount:=2;
  StringGrid1.ColCount:=30;
//================ НУМЕРУЕМ СТРОКИ И СТОЛБЦЫ ==============
  For i:=1 To StringGrid1.RowCount Do
    StringGrid1.Cells[0,i]:=IntToStr(i);
  For i:=1 To StringGrid1.ColCount Do
    StringGrid1.Cells[i,0]:=IntToStr(i);
//================= ГЕНЕРИРУЕМ МАССИВ =====================
  For i:=1 To StringGrid1.RowCount Do
    For j:=1 To StringGrid1.ColCount Do
      Begin
        A[i,j]:=Random(100) - 50;//Генерируем числа в -50..50
        StringGrid1.Cells[i,j]:=IntToStr(A[i,j]);
      End;
End;
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 
  StringGrid1.Cells[0,0]:='      i,   j';
end;
 
 procedure TForm1.Button2Click(Sender: TObject);
Var
  Min,Max,i,j,imin,jmin,imax,jmax:Integer;
Begin
  Min:=100;
  Max:=0;//т.к. минимальное число в массиве -50
  For i:=1 To StringGrid1.RowCount Do
    For j:=1 To StringGrid1.ColCount Do
      Begin
        If (A[i,j] > 0) And Odd(A[i,j]) Then
          Begin
            If A[i,j] > Max Then
              Begin
                Max:=A[i,j];
                imax:=i;
                jmax:=j;
              End;
            If A[i,j] < Min Then
              Begin
                Min:=A[i,j];
                imin:=i;
                jmin:=j;
              End;
          End;
      End;
  Memo1.Text:='Max ['+IntToStr(imax)+','+IntToStr(jmax)+'] = '+
    IntToStr(A[imax,jmax])+'   Min ['+IntToStr(imin)+','+IntToStr(jmin)+'] = '+
    IntToStr(A[imin,jmin]);
End;
 
end.
Как теперь получить в порядке возрастания все целые числа из интервала (N,M),которые не входят в последовательность а1,...,а30?Вот что у меня получилось...
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2011, 21:58
Ответы с готовыми решениями:

Командная строка программы С. Динамические массивы. Обработка символьных и строковых данных
Задание: С клавиатуры вводятся четыре массива слов: - существительные в именительном падеже...

Командная строка программы С. Динамические массивы. Обработка символьных и строковых данных
Задание: С клавиатуры вводятся четыре массива слов: - существительные в именительном падеже...

Обработка символьных и строковых переменных.
Индивидуальное задание Дана строка, состоящая из слов, разделённых пробелами. Отредактировать его...

Обработка строковых данных
Помогите пожалуйста сделать задание ( не сильно шарю в VBA.Буду очень благодарен. 1. Определить...

12
S9
Волшебник
656 / 259 / 88
Регистрация: 18.12.2010
Сообщений: 545
30.11.2011, 08:17 2
Цитата Сообщение от Black_sinigami Посмотреть сообщение
Даны целые числа а1,...,а30. Пусть М -наибольшее, а N-наименьшее из а1,...,а30. Получить в порядке возрастания все целые числа из интервала (N,M),которые не входят в последовательность а1,...,а30.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{ Даны целые числа а1,...,а30. Пусть М -наибольшее, а N-наименьшее из а1,...,а30. 
Получить в порядке возрастания все целые числа из интервала (N,M),которые не входят в последовательность а1,...,а30. }
Program Solution1;
Var
  MySet : Set Of Integer;
  M, N, i, temp :Integer;
Begin
  MySet := [];
  WriteLn('Введите интервал (N, M)');
  ReadLn(N, M);
  WriteLn('Введите элементы последовательности: ');
  For i := 1 To 30 Do
  Begin
    Write(i:2,'-й элемент = ');
    ReadLn(temp);
    Include(MySet, temp);
  End;
  For i := N To M Do
    If i In MySet Then
      Write(i:4);
  ReadLn;
End.
Вложения
Тип файла: rar S9.rar (10.7 Кб, 15 просмотров)
1
S9
Волшебник
656 / 259 / 88
Регистрация: 18.12.2010
Сообщений: 545
30.11.2011, 08:33 3
Цитата Сообщение от Black_sinigami Посмотреть сообщение
Описать процедуру ,которая для трех чисел a,b,c осуществляет перераспределение значений по правилу a>=b>=c.
Pascal
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
{ Описать процедуру ,которая для трех чисел a,b,c осуществляет перераспределение значений по правилу a>=b>=c. }
Program Solution2;
 
Procedure Redistribution( Var a, b, c : Integer);
Begin
  If a >= b Then
  Begin
    b := a - b;
    a := a - b;
    b := b + a;
  End;
  
  If b >= c Then
  Begin
    c := b - c;
    b := b - c;
    c := c + b;
  End;
  
  If c >= a Then
  Begin
    a := c - a;
    c := c - a;
    a := a + c;
  End;
End;
 
{ Основная программа }
Var
  a, b, c : Integer;
Begin
  WriteLn('Введите числа a, b и с: ');
  ReadLn(a, b, c);
  Redistribution(a, b, c);
  WriteLn(a:5, b:5, c:5);
  ReadLn;
End.
Вложения
Тип файла: rar S9.rar (5.6 Кб, 11 просмотров)
1
S9
Волшебник
656 / 259 / 88
Регистрация: 18.12.2010
Сообщений: 545
30.11.2011, 09:10 4
Цитата Сообщение от Black_sinigami Посмотреть сообщение
Даны натуральное число n, символы S1,...,Sn. Изменить последовательность S1,...,Sn, заменив в ней каждую точку на многоточие.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{ Даны натуральное число n, символы S1,...,Sn. Изменить последовательность S1,...,Sn, заменив в ней каждую точку на многоточие. }
Program Solution3;
Var
  Symbol : String;
  i, Leng : Integer;
Begin
  Write('Исходная последовательность: ');
  ReadLn(Symbol);
  Leng := Length(Symbol);
  While(Leng > 0)Do
    Begin
      If Symbol[Leng] = '.' Then
        Insert('..', Symbol, Leng);
      Dec(Leng);
    End;
  WriteLn('Полученная последовательность: ', Symbol);
  ReadLn;
End.
Вложения
Тип файла: rar S9.rar (10.8 Кб, 13 просмотров)
1
S9
Волшебник
656 / 259 / 88
Регистрация: 18.12.2010
Сообщений: 545
30.11.2011, 09:21 5
Цитата Сообщение от Black_sinigami Посмотреть сообщение
Дан файл f, компоненты которого являются целыми числами. Найти количество четных чисел среди компонент, количество квадратов нечетных чисел среди компонентов файла.
Pascal
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
{ Дан файл f, компоненты которого являются целыми числами. 
Найти количество четных чисел среди компонент, количество квадратов нечетных чисел среди компонентов файла. } 
Program Soluation4;
Var
  F : TextFile;
  FileName : String;
  cell, cnt, summa : Integer; { cnt - количество четных чисел, summa - сумма квадратов нечетных чисел }
Begin
  WriteLn('Введите имя файла: ');
  ReadLn(FileName);
  Assign(F, FileName);
  Reset(F);
  cnt := 0;
  Summa := 0;
  While Not Eof(F) DO
    Begin
      Read(F, cell);
      If cell Mod 2 = 0 Then
        Inc(cnt)
      Else
        Summa := Summa + Sqr(cell);
    End;
    Close(F);
  WriteLn('Количество четных чисел: ', cnt,'. Сумма квадратов нечетных чисел: ', Summa);
  ReadLn;
End.
Вложения
Тип файла: rar S9.rar (6.6 Кб, 10 просмотров)
1
57 / 9 / 2
Регистрация: 16.11.2011
Сообщений: 66
01.12.2011, 20:43  [ТС] 6
Задачу 5 сделала немного по-другому, в Вашем варианте 2 первых числа с одним значением получаются
Delphi
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
   mes: string [255];
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c,t:integer;
 
 
 
 begin
     a := strtoint(edit1.text);
     b := strtoint(edit2.text);
     c := strtoint(edit3.text);
     if a > b then begin
         t := a;
         a := b;
         b := t;
     end; 
     if b > c then begin 
         t := b; 
         b := c; 
         c := t; 
     end; 
     if a > b then begin 
         t := a; 
         a := b; 
         b := t; 
     end; 
     label4.caption := inttostr(a) + ', ' + inttostr(b) + ', ' + inttostr(c);
 end;
 
 
  End.
работает!!!

Добавлено через 27 минут
Задача 6
Delphi
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  
   mes:string[255];
   Leng:byte;
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
Begin
 
  mes:=Form1.Edit1.Text;
  Leng := Length(mes);
  While(Leng > 0)Do
    Begin
      If mes[Leng] = '.' Then
        Insert('..', mes, Leng);
      Dec(Leng);
 
      Form1.Label1.Caption:= mes;
end;
end;
 
end;
end.
1
S9
Волшебник
656 / 259 / 88
Регистрация: 18.12.2010
Сообщений: 545
01.12.2011, 21:23 7
Цитата Сообщение от Black_sinigami Посмотреть сообщение
Задачу 5 сделала немного по-другому, в Вашем варианте 2 первых числа с одним значением получаются
Просто хотел по хитрому сделать, без третьей переменной
Хотел сделать пару замечаний по кодуПрошу на меня не набрасываться

Цитата Сообщение от Black_sinigami Посмотреть сообщение
Задача 6
Delphi
1
mes:string[255];
По умолчанию строки в Делфи представлены как в С, т.е. строка - это указатель на первый элемент, и размер их не фиксирован, а динамический (вроде строка имеет ограничение по памяти 2 ГБ), поэтому можно [255] после string убрать, ИМХО лучше будет
Цитата Сообщение от Black_sinigami Посмотреть сообщение
Form1.Label1.Caption:= mes;
Ну а тут нет смысла писать Form1

Не по теме:

Приношу извинения, если был дотошным и докапывался до мелочей:)

0
57 / 9 / 2
Регистрация: 16.11.2011
Сообщений: 66
02.12.2011, 21:28  [ТС] 8
Цитата Сообщение от S9 Посмотреть сообщение
Приношу извинения, если был дотошным и докапывался до мелочей
да прям, мне наоборот подсказать некому

Добавлено через 4 минуты
Цитата Сообщение от Black_sinigami Посмотреть сообщение
Задача 4
Даны целые числа а1,...,а30. Пусть М -наибольшее, а N-наименьшее из а1,...,а30. Получить в порядке возрастания все целые числа из интервала (N,M),которые не входят в последовательность а1,...,а30.
насчет 4 задачи...
тут не наоборот надо сначала ввести массив а потом отсортировать?а потом ?
Я совсем не пойму как сделать так чтобыполучить все числа из NM которые не входят в последовательность а1 а30?
0
S9
Волшебник
656 / 259 / 88
Регистрация: 18.12.2010
Сообщений: 545
02.12.2011, 21:52 9
Ща объясню задачу 4
Там не надо ничего отсортировывать, а достаточно воспользоваться типом множество (который Set Of Integer)
Итак, задача
Даны целые числа а1,...,а30. Пусть М -наибольшее, а N-наименьшее из а1,...,а30.
Получить в порядке возрастания все целые числа из интервала (N,M),которые не входят в последовательность а1,...,а30.
Разбивается на несколько этапов:
1-й этап - ввод последовательности a1, ..., a30 в множество
Распишу поподробней.
Pascal
1
MySet := [];
Это мы обнуляем множество (чтобы в нем не было всякого хлама)
Pascal
1
2
3
4
5
6
For i := 1 To 30 Do
  Begin
    Write(i:2,'-й элемент = ');
    ReadLn(temp);
    Include(MySet, temp);
  End;
Далее процедурой Include добавляем в множество элементы, т.е. после завершения всех итераций цикла, в множестве будет 30 элементов (а это вся наша последовательность). Это нужно для того чтобы воспользоваться оператором In, который проверяет, принадлежит ли элемент данному множеству (т.е. решает вашу задачу)
И теперь осталось вывести в порядке возрастания все целые числа из интервала (N,M)
Pascal
1
2
3
For i := N To M Do
    If i In MySet Then
          Write(i:4);
Вот эта конструкция
Pascal
1
If i In MySet Then
как раз и проверяет, принадлежит ли число последовательности а1,...,а30
Сортировать в порядке возрастания ничего не надо, т.к. мы выводим не элементы множества, а итератор цикла (переменную i)
0
57 / 9 / 2
Регистрация: 16.11.2011
Сообщений: 66
04.12.2011, 11:54  [ТС] 10
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Var
MySet : Set of Byte;
M, N, i, off, temp:Integer;
Begin
MySet:=[];
WriteLn ('‚ўҐ¤ЁвҐ Ё*вҐаў*« (N, M)');
ReadLn(N, M);
Writeln ('‚ўҐ¤ЁвҐ н«Ґ¬Ґ*вл Ї®б«Ґ¤®ў*⥫м*®бвЁ: ');
For i:=1 to 30 Do
Begin
Write (i: 2,'-© н«Ґ¬Ґ*в= ');
ReadLn (temp);
Include (MySet, temp);
End;
For i:=N To M Do
If i In MySet
Then
Exclude (MySet,i);
Write (i:4);
End.
почему то не выводится

Добавлено через 29 минут
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Var
MySet : Set of Byte;
MySet2: Set of Byte;
M, N, i, temp:Integer;
Begin
MySet:=[];
WriteLn ('‚введите (N, M)');
ReadLn(N, M);
Writeln ('‚введите последовательность: ');
For i:=1 to 30 Do
Begin
Write (i: 2,'й элемент= ');
ReadLn (temp);
Include (MySet, temp);
End;
For i:=N To M Do
Include (MySet,i);
If i In MySet
Then
Exclude (MySet2,i);
Write (i:4);
End.
и так не получается
0
S9
Волшебник
656 / 259 / 88
Регистрация: 18.12.2010
Сообщений: 545
05.12.2011, 08:40 11
Непойму, почему ваш код из 10 поста не работает У меня все норм
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Var
MySet : Set of Byte;
M, N, i, off, temp:Integer;
Begin
MySet:=[];
WriteLn ('Введите интервал (N, M)');
ReadLn(N, M);
Writeln ('Введите элементы последовательности: ');
For i:=1 to 30 Do
Begin
Write (i:2,'-й элемент= ');
ReadLn (temp);
Include (MySet, temp);
End;
For i:=N To M Do
If i In MySet
Then
Exclude (MySet,i);
Write (i:4);
ReadLn;
End.
Компилировал Free Pascal 2.4.4 из командной строки, привожу даже скрин

Не по теме:

Я только ReadLn в 20 строчку добавил:)Кстати, переменную off можно удалить, она у вас нигде не используется

Миниатюры
массивы, обработка символьных и строковых данных, процедуры и фукции  
0
57 / 9 / 2
Регистрация: 16.11.2011
Сообщений: 66
05.12.2011, 12:41  [ТС] 12
Он у меня компилируется, но на выходе результат какой-то странный совсем не тот который нужен
не выводятся числа из N,M ,которые не входят в а1..а30.
про переменную off это да, для чего то она планировалась, но потом не была использована,
ладно впишу такой текст в контрольную, а то уже сдавать срочно надо, надеюсь не заметят а если и заметят, сами виноваты, методички правильно писать надо и на пары ходить, а то где это видано препода найти невозможно...
0
S9
Волшебник
656 / 259 / 88
Регистрация: 18.12.2010
Сообщений: 545
05.12.2011, 15:39 13
Может надо так сделать?
Pascal
1
If Not(i In MySet)
эт строка 16
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.12.2011, 15:39
Помогаю со студенческими работами здесь

Обработка строковых данных
Прошу помощи Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10...

Обработка строковых данных
Помогите, очень нужно. Дано две строки u1='Pianino', u2='Bravissimo'. Сделать строку u3 типа...

Обработка строковых данных
Если в строке цифр больше, чем латинских букв, заменить все цифры знаком &quot;+&quot;. В противном случае,...

Обработка строковых данных
Задача: В пpоизвольном тексте найти и отпечатать все слова, начинающиеся с буквы а. код: int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru