Помогите по паскалю

  • Автор темы Kiryapes
  • Дата начала
K

Kiryapes

Гость
#1
№1:
Дано натуральное число n, Переставить его цифры так, чтобы образовалось наименьшее число, записанное теми же цифрами.
№2:
Заполнить файл f целыми числами, полученными с помощью генератора случайных чисел. Из файла f получить файл g, исключив повторные вхождения чисел. Порядок следования сохранить.
№3:
В одномерном массиве, состоящим из n вещественных элементов, вычислить:
a)Сумму элементов массива, расположенных между первым и последним положительными элементами.
б) преобразовать массив таким образом. что бы сначала располагались все элементы равные 0, а потом все остальные.
 
E

etc

Гость
#2
Там что, сессии начались? ... чет уж больно много на форуме недоучек всплыло.
 
B

BurcevD

Гость
#3
Вы тогда хоть рейтинг чтоли поднимайте B)
Задача № 1
Код:
//Грубо говоря нужно просто отсортировать цифры в порядке возрастания
//Описываем переменные
Var N,Err:Integer;
S:String;
i,j:Integer;
c:char;
Begin
//Вводим число
Write('Inter number:');
Readln(n);
//Переводим число в строку, т.е. массив символов
Str(n,S);
//Обычный метод "пузырька" =)
For i:=1 to length(s)-1 do
Begin
For j:=i+1 to Length(s) do
if s[i]>s[j] then
begin
c:=s[i];
s[i]:=s[j];
s[j]:=c;
end;
end;
//Переводим получившуюся строку в число
Val(S,N,err);
//Выводим результат на экран
Writeln('Result is:',N);
end.
Задача № 2

Код:
//Описываем переменные
Var F,F1,G:Text;
I:Integer;
Si,s:String;
Begin
//Создаем исходный файл, путем заноса туда случайных чисел
Assign(f,'input.txt');
Rewrite(f);
//Я взял 100 чисел от 0 до 9 включительно
For i:=0 to 100 do
Writeln(f,Random(10));
Close(f);

//Связываем две переменные с одним фалом, для одной будем записывать
Assign(g,'output.txt');
Rewrite(g);
CLose(g);
//Для другой считывать
Assign(F1,'output.txt');
Reset(f);
//Пока не конец файла Ф
While not EOF(F) do
begin
//Считываем строку (ну или число как кому удобнее)
Readln(f,Si);
//Смотрим в файле Ф1, он же Г, только для чтения, есть ли такое число в файле
Reset(f1);
Append(g);
While (not EOF(f1))and(Si<>s) do Readln(f1,s);
//Если достигнут конец файла, а строки похожей нет, то записываем в новый файл Г считанное число
If EOF(f1) and (Si<>s) then
Writeln(g,Si);
//Закрываем, чтобы вновь считать
Close(f1);
CLose(g);
end;

Close(f);
End.
Задача № 3

Код:
//Размерность массива, я указал в 5
Const n=5;
//Описываем переменные
Var a:array[0..n-1] of Real;
Sum:Real;
indxFirst, IndxLast:Integer;
i,j:Integer;
temp:real;
Begin
//Вводим массив ручками
Writeln('Source array:');
For i:=0 to n-1 do
begin
Write('Element #',i,':');
readln(a[i]);
end;
//Ищем первй положительный элемент
IndxFirst:=0;
WHile (IndxFirst<n)and(a[indxFirst]<0) do Inc(IndxFirst);
//Ищем последний положительный элемент
IndxLast:=n-1;
While (IndxLast>=0)and(a[IndxLAst]<0) do Dec(indxLast);
//Если нет ни одного положительного, то сообщаем, что суммы показать не можем
if (indxFirst=n)or(IndxLast=-1) then
Writeln('No summ...') else
begin
//В противном случае считаем сумму от первого до последнего положительного элемента
Sum:=0;
For i:=IndxFirst to IndxLast do
Sum:=Sum+a[i];
Writeln('Sum:',sum:10:2);
end;
//Проходим весь массив, начиная со второго элемента
For i:=1 to n-1 do
//Если элемент равен 0, то
if a[i]=0 then
begin
//Перегоняем его в начало массива, сохраняя последовательность других элементов
For j:=i downto 1 do
begin
temp:=a[j];
a[j]:=a[j-1];
a[j-1]:=temp;
end;
end;
//Выводим получившийся элемент
Writeln('Destanation array:');
For i:=0 to n-1 do
Write(a[i]:5:1);
Writeln;
End.