М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
bozhkosofia
bozhkosofia
31.07.2020 21:10 •  Информатика

Снизу кусок кода и то, что он выдаёт, минимально число - не правильное, что можно или нужно сделать для того, чтобы оно выдавало правильное минимально число. Заранее

👇
Ответ:
sd16sv
sd16sv
31.07.2020

Можешь сразу читать 3 пункт, если интересна проблема только данного кода.

Объяснение:

1) Во-первых, обычно для максимальных и минимальных значений используют противоположные значения, чтобы их потом с чем-либо сравнивать, то бишь вместо nmin:=n[1] тебе следовало бы написать что-то типа nmin:=1000, а не nmin:=n[1], ибо первый элемент у тебя пуст, то есть у тебя nmin изначально равно 0, что не очень хорошо.

2) Во-вторых, когда ты пробегаешься по массиву, чтобы найти минимальное значение, ты почему-то начинаешь со второго элемента, не обращая внимания на первый, - это не очень хорошо. В данном случае, конечно, это не сыграло никакой роли, но если бы первый элемент был минимальным, то он бы был пропущен и программа бы вывела неправильный ответ.  

3) Но в твоём случае это на правильный ответ никак не влияет - проблема кода в том, что если он найдёт минимальный элемент, то в nmin уйдёт индекс этого элемента, а не сам элемент, то есть надо поменять строчку nmin:=b на nmin:=n[b].

4,8(12 оценок)
Открыть все ответы
Ответ:
Sashapro111
Sashapro111
31.07.2020
'На первом листе внесите данные
'При добавлении записей формулу вычисления задолженности добавлять не надо
'Запускаете макрос - результат (отчет) на втором листе
'На первом листе формулы пересчитывается - результаты обновляются
'Форма в этом случае -излишне
Dim i, j, s, a

Sub Othet ()
Dim info As Variant

'Clear OTHET(2 list)
 Sheets(2).Select
    Range("A1:I1").Select
    With Selection
        .HorizontalAlignment = xlGeneral:        .VerticalAlignment = xlBottom
        .AddIndent = False:        .IndentLevel = 0:   .ShrinkToFit = False:            .MergeCells = True
    End With
    Selection.Font.Bold = True
    With Selection
    End With
Sheets(2).Cells(1, 1) = "ОТЧЕТ"

'Shapka 1 list
Sheets(1).Select
 info = Array("", "фамилия", "адрес", "дата", "стоимость заказа", "сумма аванса", "задолженность", "вид заказа")
For i = 1 To UBound(info)
 Cells(1, i) = info(i)
Next

i = 2
'Расчет долга
While Cells(i, 1) <> ""
  Cells(i, 5) = "=D" + Chr(48 + i) + "-E" + Chr(48 + i)
  i = i + 1
Wend
Rows("1:1").Select
Selection.AutoFilter
a = "" + ">" + InputBox("Укажите задолженность", "", 0) + ""
Selection.AutoFilter field:=5, Criteria1:=a, Operator:=xlAnd
Range("A1:G" + Chr(48 + i) + "").Copy Sheets(2).Range("a2")

Sheets(1).Select
Selection.AutoFilter
End Sub
4,4(39 оценок)
Ответ:
Deadsun
Deadsun
31.07.2020
Замечание: данные в файле должны быть записаны по одному числу в строке.

const
  m=100; { максимальное количество чисел в файле }
var
  f:Text;
  i,j,n,k:integer;
  a:array[1..m] of integer;
begin
  { читаем данные из файла в массив }
  Assign(f,'SuperFile.txt'); Reset(f);
  i:=0;
  while not Eof(f) do begin Inc(i); Readln(f,a[i]) end;
  Close(f);
  n:=i;
  { сортируем массив по возрастанию методом пузырька }
  for i := 1 to n-1 do
    for j := 1 to n-i do
      if a[j] > a[j+1] then
      begin k := a[j]; a[j] := a[j+1]; a[j+1] := k end;
  { заполняем файл из массива }
  Rewrite(f);
  for i:=1 to n do Writeln(f,a[i],' ');
  Close(f)
end.
4,7(52 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ