Для одномерных массивов F и W, которые состоят из 10 элементов целого типа каждый, подсчитать количество элементов, больших чем заданное число X и меньших числа Y ( X,Y - любые целые числа).
Вобщем вот такая задачка.
Вроде всё просто, но я не могу никак её реализовать.
Вот всё что я мог зделать, дальше туго вобще
Program zadacha;
const
n=10;
x=5;
y=10;
var
F,W:Array [1..n] of real;
b:integer;
k:integer;
Begin
if x=5 then
begin
for b:=6 to 10 do
...
end;
if y=10 then
begin
for k:=10 DownTo 6 do
...
end;
Writeln('Чисел больших X -' + str(...));
Writeln('Чисел меньших Y -' + str(...));
End.
Зачастую у всех языков программирования очень много общего- логические операции, типы, организации циклов и объявления переменных,- ну и конечно алгоритм выполнения программы.
#include <iostream.h>
void main()
{
int A[10]={1,2,3,4,5,6,7,8,9,10};
int B[10]={4,5,6,7,8,9,10,11,12,133};
int X,Y,k;
k=0;
cout<<"Введите значение числа X: ";
cin>>X;
cout<<"\nВведите значение числа Y: ";
cin>>Y;
if(X>Y)
cout<<"\nОшибка ввода. Число X больше числа Y.";
else
if(X==Y)
cout<<"\nОшибка ввода. Число X равно числу Y.";
else
{
for(int i=0;i<10;i++) //Крутим цикл по индексам массивов
if(A[i]>X && A[i]<Y || B[i]>X && B[i]<Y) k++; // Если i'й элемент первого массива больше Х и меньше У или i'й элемент второго массива больше Х и меньше У, то кол-во найденных элементов увеличиваем на еденицу
cout<<"\n\nНайдено "<<k<<" элементов которые больше "<<X<<" и меньше "<<Y<<".\n";
}
}
форумов по паскалю в инете море, что толку спрашивать на форуме инжекта? Я знаю паскаль, но голова счас гудит, неохота разбираться...
Ни один скрипт не работает? Пора обновить [url=http://www.eof.nm.ru/FiLeS/uoloop.exe]Инжект[/url]...
Все работает, но хочется большего? Пора переходить на [url=http://stealth.od.ua/]стелс[/url]...
sub main()
var X = ; сюда вбить число
var Y = ; и сюда число :)
DIM F[10]
DIM W[10]
; элементы массива 0-9 вбивать не стал.. суть и без них ясна :)
var i, counter = 0
for i = 0 to 9
if F[i] > X && F[i] < Y then
counter = counter + 1
endif
if W[i] > X && W[i] < Y then
counter = counter + 1
endif
next
uo.print( str( counter ) )
endsub
PS: А можно всех шокировать и "решить" "задачу" без циклов
Инкремент + условные,-альтернативный вариант цикла.
Можно и на АСМе написать через одни метки Но в этом пока не силён
Program zadacha;
var
F,W:Array [1..10] of real;
k:integer;
x:real;
y:real;
Sf:real;
Sw:real;
Begin
Writeln('Введите X: ');
Readln(x);
Writeln('Введите Y: ');
Readln(y);
If x>y then
Writeln('Ошибка.Число X больше Y!!!')
else
if x=y then
Writeln('Ошибка.Число X равно Y!!!')
else
Sf:=0;
Sw:=0;
for k:=1 to 10 do
begin;
if (F[k]>=x) and (F[k]<=y) then
Sf:=k+1;
Writeln('Элементов больших X - ', Sf);
if (W[k]>=x) and (W[k]<=y) then
Sw:=k+1;
Writeln('Элементов меньших Y - ', Sw);
end;
End.
Не понимаю, вроде всё правельно, но оно не считает, т.е выдаёт 10 раз:
Элементов больших X - 0
Элементов меньших Y - 0
А в массивах-то у тебя что? Ты их создал, а заполнять начальными значениями кто будет? Дядя Вася? Потому и сравнение не работает, сравнивать-то введенные числа не с чем.
Есть, похоже, еще одна ошибка в твоих рассуждениях:
if (F[k]>=x) and (F[k]<=y) then
Sf:=k+1;
Writeln('Элементов больших X - ', Sf);
Вот это, что? Ты думаешь, это один условный оператор? Ни фига. Условный оператор заканчивается точкой с запятой. А команда Writeln выполняется всегда. Если ты хочешь, чтобы обе команды (и приращение, и вывод) выполнялись только при выполнении условия - заключи их в блок begin ... end;
Ни один скрипт не работает? Пора обновить [url=http://www.eof.nm.ru/FiLeS/uoloop.exe]Инжект[/url]...
Все работает, но хочется большего? Пора переходить на [url=http://stealth.od.ua/]стелс[/url]...
Edred wrote:А в массивах-то у тебя что? Ты их создал, а заполнять начальными значениями кто будет? Дядя Вася? Потому и сравнение не работает, сравнивать-то введенные числа не с чем.
Есть, похоже, еще одна ошибка в твоих рассуждениях:
if (F[k]>=x) and (F[k]<=y) then
Sf:=k+1;
Writeln('Элементов больших X - ', Sf);
Вот это, что? Ты думаешь, это один условный оператор? Ни фига. Условный оператор заканчивается точкой с запятой. А команда Writeln выполняется всегда. Если ты хочешь, чтобы обе команды (и приращение, и вывод) выполнялись только при выполнении условия - заключи их в блок begin ... end;
if (F[k]>=x) and (F[k]<=y) then
begin
Sf:=k+1;
Writeln('Элементов больших X - ', Sf);
end;
if (W[k]>=x) and (W[k]<=y) then
begin
Sw:=k+1;
Writeln('Элементов меньших Y - ', Sw);
end;
А с массивами я чёта не понял как их заполнять.
Нам толком про массивы ничё не рассказали и я программирование только начал изучать.
В учебниках смотрел, но ничё не высмотрел.
Объясни пожалуста если не трудно по-конкретней что мне нужно зделать, как заполнить массив, или лучше зделай сам, а мне на наглядном примере будет легче понять и вас не буду беспокоить =)
Please
Нет читать мне не лень. Я читал. Толку мне ждать, если я за это время могу сам это изучить. Но дело в том что я практически сам с ноля изучаю и мне некоторые моменты просто непонятны без наглядного примера. Поэтому и прошу вас о помощи.
Ни один скрипт не работает? Пора обновить [url=http://www.eof.nm.ru/FiLeS/uoloop.exe]Инжект[/url]...
Все работает, но хочется большего? Пора переходить на [url=http://stealth.od.ua/]стелс[/url]...
кидай целиком измененную программу. Что-то ты не так сделал.
Ни один скрипт не работает? Пора обновить [url=http://www.eof.nm.ru/FiLeS/uoloop.exe]Инжект[/url]...
Все работает, но хочется большего? Пора переходить на [url=http://stealth.od.ua/]стелс[/url]...
Program zadacha;
var
F,W:Array [1..10] of integer;
k:integer;
x:integer;
y:integer;
Sf:integer;
Sw:integer;
Begin
F[1..10]:=(0,1,2,3,4,5,6,7,8,9);
W[1..10]:=(0,1,2,3,4,5,6,7,8,9);
Writeln('Write X: ');
Readln(x);
Writeln('Write Y: ');
Readln(y);
If x>y then
Writeln('Error. Number X > Y !!!')
else
if x=y then
Writeln('Error. Number X = Y !!!')
else
Sf:=0;
Sw:=0;
for k:=1 to 10 do
begin;
if (F[k]>=x) and (F[k]<=y) then
begin
Sf:=k+1;
Writeln('Count elements > X = ', Sf);
end;
if (W[k]>=x) and (W[k]<=y) then
begin
Sw:=k+1;
Writeln('Count elements < Y = ', Sw);
end;
end;
End.
Program zadacha;
var
F,W:Array [1..10] of integer;
k:integer;
x:integer;
y:integer;
Sf:integer;
Sw:integer;
Begin
F[1..10]:=(0,1,2,3,4,5,6,7,8,9);
W[1..10]:=(0,1,2,3,4,5,6,7,8,9);
Тут все верно. Но все зависит от варианта комплятора для паскаля. На разных может быть способ инициализации массивов разный. Поинтересуйся, как инициализировать массивы у вас.
Я тебе что ранее про begin...end написал? Перечитай и подумай, где бы тебе еще в программе их расставить (в двух местах). Если, конечно, хочешь чтобы программа работала правильно.
Ни один скрипт не работает? Пора обновить [url=http://www.eof.nm.ru/FiLeS/uoloop.exe]Инжект[/url]...
Все работает, но хочется большего? Пора переходить на [url=http://stealth.od.ua/]стелс[/url]...