Вот решение, только не через файлы, а через ввод N и рандомное заполнение списка:
type pType = ^rType; rType = record N : Integer; Pred, Next : pType; end;
var First, Last, Cur, Tmp : pType; N, K : Word; Nmax, Ntmp : Integer; Kmax, Ktmp : Word;
begin
Write('N = '); ReadLn(N);
{ заполняем случайными числами }
Randomize; New(First); First^.N := Random(101) - 50; First^.Pred := nil; First^.Next := nil; Last := First;
for K := 2 to N do begin New(Cur); Cur^.N := Random(101) - 50; Cur^.Pred := Last; Cur^.Next := nil; Last^.Next := Cur; Last := Cur; end;
{ выводим исходные данные }
Write('Исходные данные: '); Cur := First; repeat Write(#32, Cur^.N); Cur := Cur^.Next; until Cur = nil; WriteLn;
{ считаем количество вхождений и ищем максимальное число с наибольшим числом вхождений }
Cur := First; Nmax := Cur^.N; Kmax := 0;
repeat Ntmp := Cur^.N; Ktmp := 0; Tmp := Cur;
repeat if Tmp^.N = Ntmp then Inc(Ktmp); Tmp := Tmp^.Next; until Tmp = nil;
if (Ktmp > Kmax) or ((Ktmp = Kmax) and (Ntmp > Nmax)) then begin Kmax := Ktmp; Nmax := Ntmp; end; Cur := Cur^.Next; until Cur = nil;
{ перенесём все значения Nmax в конец }
Cur := Last^.Pred; repeat if Cur^.N = Nmax then begin Tmp := Cur; Cur := Cur^.Pred; Cur^.Next := Tmp^.Next; Tmp^.Next^.Pred := Cur; Last^.Next := Tmp; Tmp^.Next := nil; Tmp^.Pred := Last; Last := Tmp; end else Cur := Cur^.Pred; until Cur = nil;
{ выводим результат }
Write('Полученные данные: '); Cur := First; repeat Write(#32, Cur^.N); Cur := Cur^.Next; until Cur = nil; WriteLn;
{ хорошим тоном будет - освобождение памяти }
Cur := First; repeat Tmp := Cur; Cur := Cur^.Next; Dispose(Tmp); until Cur = nil;
end.
Если хоть чуть-чуть волокёшь - переделать не составит труда!
Другие языки программирования и технологии
Задана последовательность, содержащая n целых чисел. Необходимо найти число паскаль
надо сначала считать эти числа в одномерный массив, потом создать пустой двумерный и заполнить его таким образом: пишем первое число из первого массива первым элементом первой строки второго. Второй элемент строки пока равен 1. Если следующее число из 1 массива не встречается в первом столбце 2 массива, дописываем его в новую строку, иначе увеличиваем второй столбец соответствующей строки на 1. После проверки 1 массива сортируем 2 массив по убыванию 2 столбца. Проверяем, есть ли одинаковые элементы в начале 2 столбца, и если да - сортируем их по убыванию 1 столбца. Получаем искомое число.
После этого в первом массиве находим эти числа и перемещаем их в конец.
После этого в первом массиве находим эти числа и перемещаем их в конец.
пиши в агент или icq 452371863
Похожие вопросы
- Данная последовательность из n целых чисел. Найти номер максимального элемента в этой последовательности. Новинка!
- Помогите :) Дан массив из n целых чисел. Найти количество встречающихся равных чисел.
- Вам даны все целые числа от 1 до N + 1, кроме одного. Найдите отсутствующее число.
- В последовательности целых чисел найдите минимальное число и количество его повторений. Паскаль, помогите!
- помогите? Дан массив целых чисел (n=15),
- Дан файл целых чисел. Создать два новых файла, первый из которых содержит положительные числа из исходного файла...
- В паскале нужно разбить целое число на три слогаемых, всевозможными способами.
- Решите задачу! Дано целое число n найдите сумму 1^n +2^n-1 + 3^n-2 ...+n^1
- дано целое число n,вывести все числа от 1 до n,и кол во этих чисел
- Составить программу С++ В массиве целых чисел с количеством элементов n найти наиболее часто встречающееся число