0 / 0 / 0
Регистрация: 21.11.2014
Сообщений: 22
1

Ввести элементы одномерного массива длинной 40 как значение функции ln(1+x) для х от -5 до 15 с шагом 0,5

21.11.2014, 13:50. Показов 2443. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ввести элементы одномерного массива длинной 40 как значение функции ln(1+x) для х от -5 до 15 с шагом 0,5 и вывести на экран.
Определить:
• Минимальный элемент массива и его номер;
• Количество элементов в диапазоне от 1 до 3;
• Произведение элементов больших 1.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2014, 13:50
Ответы с готовыми решениями:

Ввести элементы одномерного массива размером 30 как значения произвольной функции
Ввести элементы одномерного массива размером 30 как значения произвольной функции и вывести на...

Для каждого массива в диалоге ввести размер массива и элементы массива и найти сумму и среднее арифметическое значение для каждого массива
даны 3 различных массива целых чисел(размер каждого не должен превышать 15). Для каждого массива в...

Ввести элементы одномерного массива
Pascal ABC Ввести элементы одномерного массива размером 10 через типизированную константу....

Ввести элементы одномерного массива
Ввести элементы одномерного массива размером n=20 как значения функции lgx для x от 1 до 20 с шагом...

21
CAPITAL OF ROCK!
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
21.11.2014, 15:33 2
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
38
39
40
41
42
43
44
45
46
47
const
    h = 0.5;
    n = 40;
 
var
    a : Array[1..n] Of Double;
    minID, i : Byte;
    x : Single = -5;
    infCount : Byte = 0;
    count : Byte = 0;
    mult : Double = 1;
    min : Double;
begin
    //заполняем и выводим
    for i := 1 to n do
    begin
        if (x > -1) then
        begin
            a[i] := ln(1 + x);
            x := x + h;
            Write(a[i]:6:2);
        end
        else
        begin
            Inc(infCount);
            Write('  -inf');
        end;
        x := x + h;
    end;
    WriteLn;
    min := a[infCount+1]; minID := infCount+1;
    for i := infCount+1 to n do
    begin
        if ((a[i] >= 1) And (a[i] <= 3)) then //1..3
            Inc(count);
        if (a[i] > 1) then //произведение
            mult := mult * a[i];
        if (min > a[i]) then //поиск минимума
        begin
            minID := i;
            min := a[i];
        end;
    end;
    WriteLn('Количество в диапазоне 1..3: ', count);
    WriteLn('Произведение элементов больших 1: ', mult:6:2);
    WriteLn('Минимальный элемент: a[', minID, ']=', min:6:2);
end.
1
0 / 0 / 0
Регистрация: 21.11.2014
Сообщений: 22
22.11.2014, 18:42  [ТС] 3
Может, я конечно что-то не так сделал, но программа выдаёт ошибки.
0
CAPITAL OF ROCK!
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
22.11.2014, 19:12 4
какие именно ошибки-то?
0
CAPITAL OF ROCK!
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
22.11.2014, 19:13 5
какой паскаль у вас-то?
Миниатюры
Ввести элементы одномерного массива длинной 40 как значение функции ln(1+x) для х от -5 до 15 с шагом 0,5  
0
0 / 0 / 0
Регистрация: 21.11.2014
Сообщений: 22
24.11.2014, 05:55  [ТС] 6
Вообще-то Делфи
0
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
24.11.2014, 07:42 7
Цитата Сообщение от нович Посмотреть сообщение
массива длинной 40 как значение функции ln(1+x) для х от -5 до 15 с шагом 0,5
Так при x<=-1 функция не определена...
А на интервале -0.5..15 при шаге 0.5 только 32 значения.
Что-то не то в задании.
0
CAPITAL OF ROCK!
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
24.11.2014, 14:17 8
нович, к стандартному шаблону консольного приложения делфи не судьба приделать этот код? или добавить перед моим же кодом
Pascal
1
2
{$APPTYPE CONSOLE}
uses SysUtils;
0
0 / 0 / 0
Регистрация: 21.11.2014
Сообщений: 22
25.11.2014, 05:30  [ТС] 9
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
var
  Form1: TForm1;
 const
 h=0.5;
 n=40;
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
     a : array [1..n] of double;
     minID, i : Byte;
     x: Single = -5;
     infCount : Byte = 0;
     mult : Double = 1;
     min : double;
begin
 for i:=1 to n do
 begin
 if (x>-1) then
 begin
 a [i]:= ln (1+x);
 x:=x+h;
 Write (a[i]:6:2);
end
  else
  begin
  Inc (infCount);
  Write (' -inf');
  end;
  x:=x+h;
  end;
  writeLn;
  min:= a[infCount+1]; minID:=infCount+1;
  for i:= infCount+1 to n do
  begin
  if ((a[i] >=1) And (a[i] <=3)) then  //1..3
  Inc(count);
  if (a[i] >1) then
  milt:= milt* a[i];
  if (min > a[i]) then
  begin
  minID:=1;
  min:= a[i];
  end;
  end;
  WriteLn ('Êîëè÷åñòâî â äèàïàçîíå 1..3:', count);
  WriteLn ('Ïðîèçâåäåíèå ýëåìåíòîâ áîëüøèõ 1:',mult:6:2);
  WriteLn ('Ìèíèìàëüíûé ýëåìåíò: a[', minID, ']=', min:6:2);
 end.
Выдаёт ошибки:
Doc1.docx
0
CAPITAL OF ROCK!
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
25.11.2014, 13:08 10
потому что вы не в тот раздел пишете. вам в раздел с делфи, ибо код, представленный тут, предназначен для консольного приложения, а вы пытаетесь его втюхать приложению с формой.
0
0 / 0 / 0
Регистрация: 21.11.2014
Сообщений: 22
26.11.2014, 05:33  [ТС] 11
Я здесь недавно, не подскажите как перенести тему? Создал тему в делфи, её удалили, так как она дублирует эту, а как удалить не знаю. Заранее благодарен.
0
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
26.11.2014, 06:27 12
Цитата Сообщение от нович Посмотреть сообщение
массива длинной 40 как значение функции ln(1+x) для х от -5 до 15 с шагом 0,5
Я Вам уже писал что с этим условием массив не создадите поскольку при x<=-1 ln(1+х) не определен. И нет никакого смысла переносить тему. Уточните сначала условие.
0
0 / 0 / 0
Регистрация: 21.11.2014
Сообщений: 22
28.11.2014, 05:32  [ТС] 13
Новая формулировка:
Ввести элементы одномерного массива длиной 31 как значение функции ln(1+x) для х от 0 до 15 с шагом 0,5 и вывести на экран.

Определить:

Минимальный элемент массива и его номер;

Количество элементов в диапазоне от 1 до 3;

Произведение элементов, значение которых больше 1.
0
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
28.11.2014, 08:15 14
Лучший ответ Сообщение было отмечено нович как решение

Решение

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
const n=31;
var a:array[1..n]of real;
    i,imn,k:byte;
    x,mn,p:real;
begin
x:=0;
i:=1;
while x<=15 do
 begin
  a[i]:=ln(1+x);
  x:=x+0.5;
  i:=i+1;
 end;
writeln('Полученный массив');
mn:=a[1];
imn:=1;
k:=0;
p:=1;
for i:=1 to n do
 begin
  write(a[i]:5:2);
  if a[i]<mn then
   begin
    mn:=a[i];
    imn:=i;
   end;
  if(a[i]>=1)and(a[i]<=3) then k:=k+1;
  if a[i]>1 then p:=p*a[i];
 end;
writeln;
writeln('Минимальный элемент=',mn:0:2,' его номер=',imn);
writeln('Количество элементов в диапазоне [1;3]=',k);
writeln('Произведение элементов больших 1=',p:0:2);
end.
1
0 / 0 / 0
Регистрация: 21.11.2014
Сообщений: 22
07.12.2014, 06:37  [ТС] 15
А как исправить то, что распечатывается последний элемент массива, а не весь массив
0
CAPITAL OF ROCK!
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
07.12.2014, 06:43 16
нович, в какой-такой вселенной у вас печатается только последний элемент массива?
0
0 / 0 / 0
Регистрация: 21.11.2014
Сообщений: 22
07.12.2014, 07:39  [ТС] 17
Написание кода немного отличается, у нас требуется примерно так
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
var a:array[1..n] of real;
 i,k:byte;
   nom: integer;
   min, x,p:real;
begin
x:=0;
i:=1;
while x<=15 do
 begin
  a[i]:=ln(1+x);
  x:=x+0.5;
  i:=i+1;
 end;
Form1.Memo1.Text:=FloatToStr(a[i]);
min:=a[1];
nom:=1;
k:=0;
p:=1;
for i:=1 to n do
 begin
  if a[i]<min then
   begin
    min:=a[i];
    nom:=i;
   end;
  if(a[i]>=1)and(a[i]<=3) then k:=k+1;
  if a[i]>1 then p:=p*a[i];
 end;
Form1.Edit1.Text:=FloatToStr(min);
Form1.Edit4.Text:=FloatToStr(nom);
Form1.Edit2.Text:=FloatToStr(k);
Form1.Edit3.Text:=FloatToStr(p);
end;
 
end.
с этой строкой: Form1.Memo1.Text:=FloatToStr(a[i]);
наверно ошибся
0
CAPITAL OF ROCK!
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
07.12.2014, 16:38 18
нович, может потому что эта строка вне цикла?
внесите её в while
Delphi
1
2
3
4
5
6
7
while x<=15 do
 begin
  a[i]:=ln(1+x);
  Form1.Memo1.Lines.Add(FloatToStr(a[i]);
  x:=x+0.5;
  i:=i+1;
 end;
0
0 / 0 / 0
Регистрация: 21.11.2014
Сообщений: 22
07.12.2014, 17:26  [ТС] 19
Попробовал так, но программа выдаёт ошибку
Вложения
Тип файла: docx Doc2.docx (54.1 Кб, 5 просмотров)
0
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
07.12.2014, 17:30 20
Delphi
1
Form1.Memo1.Lines.Add(FloatToStr(a[i]));//скобку добавь
0
07.12.2014, 17:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.12.2014, 17:30
Помогаю со студенческими работами здесь

Ввести и распечатать все элементы одномерного массива
Ввести и распечатать все элементы

Ввести элементы одномерного массива размером 15 с клавиатуры и вывести на печать в столбик
Ввести элементы одномерного массива размером 15 с клавиатуры и вывести на печать в столбик.

Ввести элементы одномерного массива размером 30 с клавиатуры и вывести на печать в несколько строчек.
Цель работы: Освоить типовые приемы ввода и вывода элементов массивов. 1. Ввести элементы...


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

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

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