Помогите, пжст, решить задачу в Паскале
Создать массив вещественных числе. Длина массива задается пользователем. В один новый массив записать те числа, которые меньше заданного пользователем числа, во второй новый массив записать те числа, которые больше либо равны заданному числу.
Надеюсь на вашу отзывчивость. :)
По-моему решение расписано уже в условии задачи.
Ну тебе как эксперту, я не сомневаюсь, все понятно с первых слов. А я с Паскалем знакома всего пару дней, поэтому ценные советы приветствуются.
А причем тут паскаль? Тут нужно лишь представить алгоритм. А реализация - уже другой вопрос.
Цитата: Juggle
Ну тебе как эксперту, я не сомневаюсь, все понятно с первых слов. А я с Паскалем знакома всего пару дней, поэтому ценные советы приветствуются.
Оказывается пара дней -довольно большой срок. 40 минут хватает. Чтоб скачать компилятор(интерпретатор) и написать код
Код:
Type
MyArray=Array[1..10000000] of real; {Описываем массив всего из 1 элемента}
MyArrayPtr=^MyArray;
Var
DynamicArray, ArrayLess, ArrayMore
: MyArrayPtr; {Это указатель на наш динамически массив}
Cur
: real; {Заданное число}
Count, {Это вводимый размер массива}
CountLess, {Это размер массива чисел меньше заданного}
CountMore, {Это размер массива чисел больше заданного}
I,I2,I3, {Индексатор}
Size: {Байтовый размер}
integer;
Begin
Write('Введите ключевое значение');
ReadLn(Cur);
{Вводим размер массива}
Write('Число элементов массива: ');
ReadLn(Count);
{ выделяем память: Count x РазмерТипа }
Size:=Count*SizeOf(real);
GetMem(DynamicArray,Size);
CountLess:=0;
CountMore:=0;
{заполняем наш массив значениями}
For i:=1 to Count do
begin
Write(i,':=');
ReadLn(DynamicArray^);
if(DynamicArray^<Cur) then CountLess:=CountLess+1
else CountMore:=CountMore+1;
end;
Size:=CountLess*SizeOf(real);
GetMem(ArrayLess,Size);
Size:=CountMore*SizeOf(real);
GetMem(ArrayMore,Size);
I2:=0;
I3:=0;
For i:=1 to Count do
begin
if(DynamicArray^<Cur)
then
begin
I2:=I2+1;
ArrayLess^[I2]:=DynamicArray^;
end
else
begin
I3:=I3+1;
ArrayMore^[I3]:=DynamicArray^;
end
end;
Write('Массив меньше :');
For i:=1 to I2 do
Write(' ',ArrayLess^);
WriteLn();
Write('Массив больше или равно :');
For i:=1 to I3 do
Write(' ',ArrayMore^);
{освобождаем зарезервированную память для массива}
FreeMem(DynamicArray);
FreeMem(ArrayLess);
FreeMem(ArrayMore);
End.
MyArray=Array[1..10000000] of real; {Описываем массив всего из 1 элемента}
MyArrayPtr=^MyArray;
Var
DynamicArray, ArrayLess, ArrayMore
: MyArrayPtr; {Это указатель на наш динамически массив}
Cur
: real; {Заданное число}
Count, {Это вводимый размер массива}
CountLess, {Это размер массива чисел меньше заданного}
CountMore, {Это размер массива чисел больше заданного}
I,I2,I3, {Индексатор}
Size: {Байтовый размер}
integer;
Begin
Write('Введите ключевое значение');
ReadLn(Cur);
{Вводим размер массива}
Write('Число элементов массива: ');
ReadLn(Count);
{ выделяем память: Count x РазмерТипа }
Size:=Count*SizeOf(real);
GetMem(DynamicArray,Size);
CountLess:=0;
CountMore:=0;
{заполняем наш массив значениями}
For i:=1 to Count do
begin
Write(i,':=');
ReadLn(DynamicArray^);
if(DynamicArray^<Cur) then CountLess:=CountLess+1
else CountMore:=CountMore+1;
end;
Size:=CountLess*SizeOf(real);
GetMem(ArrayLess,Size);
Size:=CountMore*SizeOf(real);
GetMem(ArrayMore,Size);
I2:=0;
I3:=0;
For i:=1 to Count do
begin
if(DynamicArray^<Cur)
then
begin
I2:=I2+1;
ArrayLess^[I2]:=DynamicArray^;
end
else
begin
I3:=I3+1;
ArrayMore^[I3]:=DynamicArray^;
end
end;
Write('Массив меньше :');
For i:=1 to I2 do
Write(' ',ArrayLess^);
WriteLn();
Write('Массив больше или равно :');
For i:=1 to I3 do
Write(' ',ArrayMore^);
{освобождаем зарезервированную память для массива}
FreeMem(DynamicArray);
FreeMem(ArrayLess);
FreeMem(ArrayMore);
End.
Не все такие прошаренные в програмировании, но я правда буду учиться разбираться в такие задачах за 40 минут. Ты сделал неоценимый вклад в этот процесс. Спасибо еще раз.:)
код правильный,но блин,с динамической памятью?в задании,где нужно заполнить массив?:)
Сейчас числа делит не правильно по массивам, хотя вижу что в условии все четко написано:
if(DynamicArray^<Cur)
then
begin
I2:=I2+1;
ArrayLess^[I2]:=DynamicArray^;
end
else
begin
I3:=I3+1;
ArrayMore^[I3]:=DynamicArray^;
end
fformula.net. короче, просто отправляешь условие задачи и тебе оперативно высылают ответ. я, правда, один раз там была, но мне помогло.удачи))
попробуй вот тут посмотреть