1 / 1 / 0 Регистрация: 09.01.2011 Сообщений: 20 |
|||||
1 |
|||||
Минимальная сумма подряд идущих чисел?14.01.2011, 16:25. Показов 3115. Ответов 17
Кто знает как найти минимальную сумму подряд идущих чисел?
Добавлено через 19 часов 48 минут Например Входной файл:
Выходной файл: Комментарий — Минимальная сумма подряд идущих чисел начинается с позиции 3 и заканчивается позицией 6: (-2) + (-3) + 4 + (-7) = -8
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
14.01.2011, 16:25 |
17 |
Mawrat 13095 / 5876 / 1706 Регистрация: 19.09.2009 Сообщений: 8,808 |
||||
14.01.2011, 18:13 |
2 |
|||
1 |
1 / 1 / 0 Регистрация: 09.01.2011 Сообщений: 20 |
|
14.01.2011, 22:36 [ТС] |
3 |
Это на Дельфи, а как будет на паскале?
0 |
Фрилансер 5845 / 1226 / 499 Регистрация: 23.11.2010 Сообщений: 3,375 Записей в блоге: 1 |
|
14.01.2011, 22:37 |
4 |
NatawaB, в чем трудности? Delphi и Pascal похожи
0 |
1 / 1 / 0 Регистрация: 09.01.2011 Сообщений: 20 |
|
14.01.2011, 22:39 [ТС] |
5 |
Дело в том, что у меня еще много задач которые нужно решить к завтрешнему утру, и я не успеваю. Пожалуйста, помогите. Срочно надо.
0 |
13095 / 5876 / 1706 Регистрация: 19.09.2009 Сообщений: 8,808 |
|
14.01.2011, 22:46 |
6 |
В самом деле — раздел-то Pascal… Сейчас на Pascal переведу…
1 |
1 / 1 / 0 Регистрация: 09.01.2011 Сообщений: 20 |
|
14.01.2011, 22:47 [ТС] |
7 |
Заранее благодарна. Буду ждать
0 |
Mawrat 13095 / 5876 / 1706 Регистрация: 19.09.2009 Сообщений: 8,808 |
||||
14.01.2011, 23:03 |
8 |
|||
1 |
NatawaB 1 / 1 / 0 Регистрация: 09.01.2011 Сообщений: 20 |
||||
14.01.2011, 23:14 [ТС] |
9 |
|||
Почему в 37 строчке ошибка — Must be in 8087 mode to compile this? Что это значит?
0 |
13095 / 5876 / 1706 Регистрация: 19.09.2009 Сообщений: 8,808 |
|
14.01.2011, 23:27 |
10 |
Это надо настроить компилятор Pascal. Сейчас скажу что надо сделать…
1 |
1 / 1 / 0 Регистрация: 09.01.2011 Сообщений: 20 |
|
14.01.2011, 23:31 [ТС] |
11 |
Это надо настроить компилятор Pascal. Сейчас скажу что надо сделать… Все СУПЕР! Получилось. Только вот пропустили то, что в первой строке указано количесвто чисел в последовательности. Как это исправить?
0 |
13095 / 5876 / 1706 Регистрация: 19.09.2009 Сообщений: 8,808 |
|
14.01.2011, 23:35 |
12 |
В этом коде это вообще не нужно. Код построен так, что сколько чисел ввели, столько и будет прочитано. Ввод количества элементов может быть нужен только для такого случая: если, например, ввели 15 чисел, а учитывать надо, например, только 10.
0 |
NatawaB 1 / 1 / 0 Регистрация: 09.01.2011 Сообщений: 20 |
||||
14.01.2011, 23:46 [ТС] |
13 |
|||
В этом коде это вообще не нужно. Код построен так, что сколько чисел ввели, столько и будет прочитано. Ввод количества элементов может быть нужен только для такого случая: если, например, ввели 15 чисел, а учитывать надо, например, только 10. Эта задача решается с использованием входящих и выходящих файлов. И вот, в задаче конкретно говорится, что первая строка указывает на количество чисел в последовательности. Я даже не знаю как это сделать, но может быть настроить программу так чтобы она начала считывать со второй строки? Конечно, если это возможно … Добавлено через 6 минут
0 |
Mawrat 13095 / 5876 / 1706 Регистрация: 19.09.2009 Сообщений: 8,808 |
||||
14.01.2011, 23:57 |
14 |
|||
Эта задача решается с использованием входящих и выходящих файлов. И вот, в задаче конкретно говорится, что первая строка указывает на количество чисел в последовательности. Это сделано, возможно, для облегчения задачи по извлечению чисел из строки. В нашей реализации эта информация (количество элементов) — лишняя.
1 |
NatawaB 1 / 1 / 0 Регистрация: 09.01.2011 Сообщений: 20 |
||||
15.01.2011, 00:01 [ТС] |
15 |
|||
Большое спасибо!!! Выручил! Mawrat: пожалуйста.
0 |
*~<`PIK`>~* ﻌﺹ ﺦ ﺖﻀ ﺹ ﻙ ﺵﻔ ﺊ ﺘﺝ 607 / 387 / 81 Регистрация: 15.12.2009 Сообщений: 753 |
||||
15.01.2011, 00:14 |
16 |
|||
Вот если нужно подправил код Mawrat‘a чтобы 1 строка(количество чисел) учитывалась.
0 |
Mawrat 13095 / 5876 / 1706 Регистрация: 19.09.2009 Сообщений: 8,808 |
||||
15.01.2011, 00:23 |
17 |
|||
Только строчки надо переставить и проверку сделать на равенство:
Потому что Cnt должно точно соответствовать количеству записанных в массив чисел.
0 |
ﻌﺹ ﺦ ﺖﻀ ﺹ ﻙ ﺵﻔ ﺊ ﺘﺝ 607 / 387 / 81 Регистрация: 15.12.2009 Сообщений: 753 |
|
15.01.2011, 00:29 |
18 |
Cnt должно точно соответствовать количеству записанных в массив чисел Точно, не подумал.
0 |
Const m=100; var i,j,min,tempmin,s,k,N,beg,en:integer; x:array [1..m] of integer; begin Randomize; writeln('Введите количество чисел'); readln(N); writeln('Теперь вводите 'n,' чисел'); For i:=1 to N do begin { x[i]:=random(6); write(x[i]:5);} readln(x[i]); end; writeln; for i:= 1 to N do min:=min+x[i]; beg:=1; en:=N; for i:= 1 to N-1 do begin tempMin:=0; for j:= i to N do tempMin:=tempMin+x[j]; if TempMin<min then min:=TempMin; tempMin:=0; for j:= 1 to i do tempMin:=tempMin+x[j]; if TempMin<min then min:=TempMin; for j:= i+1 to n do begin tempMin:=0; for k:= i to j do tempMin:=tempMin+x[k]; if TempMin<min then min:=TempMin; end; end; writeln('Минимальная сумма = ',min); readln; end.
формать входных данных первая строка файла содержит количество цифр n , во второй строке задаются n чисел кадое из которых по модулю не превосходит 1000 000 000 тоесть формат входных данных : 7 - количество цифр -5 10 -2 -3 4 -7 1 - сама последовательность а вывод должен быть -8
Const m=100; var i,j,min,tempmin,s,k,N,beg,en:integer; x:array [1..m] of integer; begin Randomize; writeln('Введите количество чисел'); readln(N); writeln('Теперь вводите 'n,' чисел'); For i:=1 to N do begin { x[i]:=random(6); write(x[i]:5);} readln(x[i]); end; writeln; for i:= 1 to N do min:=min+x[i]; beg:=1; en:=N; for i:= 1 to N-1 do begin tempMin:=0; for j:= i to N do tempMin:=tempMin+x[j]; if TempMin<min then min:=TempMin; tempMin:=0; for j:= 1 to i do tempMin:=tempMin+x[j]; if TempMin<min then min:=TempMin; for j:= i+1 to n do begin tempMin:=0; for k:= i to j do tempMin:=tempMin+x[k]; if TempMin<min then min:=TempMin; end; end; writeln('Минимальная сумма = ',min); readln; end.
Задание:
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать произвольные целые значения. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит номера двух элементов массива, сумма которых минимальна. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль |
const N=30; |
Си |
#include<stdio.h> |
Естественный язык |
Объявляем массив A из 30 элементов. Объявляем целочисленные переменные i, j, min, min2, s. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й. … |
Решение:
Очевидно, что нужно вывести номера минимального элемента массива и «второго» минимума. Храним в переменных min и min2 не значения, а номера элементов):
const N = 30;
var a : array[1..N] of integer;
i, k, min, min2: integer;
begin
for i: = 1 to N do readln(a[i]);
if a[1] < a[2] then begin
min : = 1; min2: = 2
end
else begin
min : = 2; min2: = 1
end;
for i: = 3 to N do
if a[i] < a[min] then begin
min2 : = min;
min: = i
end
else if a[i] < a[min2] then min2 : = i;
writeln(min, ' ', min2)
end.
Основные операции обработки массивов:
- вычисление суммы элементов массива;
- поиск максимального или минимального значения в массиве;
- поиск максимального или минимального среди всех элементов массива, удовлетворяющих некоторому условию;
- обмен значениями между элементами;
- реверс — перестановка элементов массива местами в обратном порядке (последний становится первым, первый — последним и т. д.
Рассмотрим подробнее каждую операцию.
Вычислим сумму элементов массива из предыдущей теории — усовершенствуем программу. Цикл, с помощью которого выводился массив, заменим на цикл, который будет прибавлять к переменной (s) каждый последующий элемент массива.
Ответ: (55).
Задачи на поиск в массиве
Поиск максимального значения.
Идея поиска максимального значения заключается в следующем: каждый элемент массива поочерёдно сравнивается со следующим. Если он больше, то некоторой переменной max будет присвоено значение этого элемента. Напишем программу.
Ответ: (100).
Найдём наибольшее число, удовлетворяющее некоторому условию.
Задача: найти максимальное чётное число. Для этого добавим в условие проверку на чётность при помощи операции mod.
Ответ: (8).
Обмен значениями между элементами
Допустим, нам нужно удалить некоторый элемент массива.
Удалим элемент с индексом (6). Для этого добавляем ещё одну переменную, которая будет обозначать индекс удаляемого элемента. Далее массив будем выводить по частям. До удаляемого элемента — без изменений, пропустим удаляемый элемент и выведем остаток массива.