Для одномерных массивов F и W, которые состоят из 10 элементов целого типа каждый, подсчитать количество элементов, больших чем заданное число X и меньших числа Y ( X,Y - любые целые числа).
Вобщем вот такая задачка. Вроде всё просто, но я не могу никак её реализовать. Вот всё что я мог зделать, дальше туго вобще
Зачастую у всех языков программирования очень много общего- логические операции, типы, организации циклов и объявления переменных,- ну и конечно алгоритм выполнения программы.
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"; } }
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;
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
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
Нет читать мне не лень. Я читал. Толку мне ждать, если я за это время могу сам это изучить. Но дело в том что я практически сам с ноля изучаю и мне некоторые моменты просто непонятны без наглядного примера. Поэтому и прошу вас о помощи.
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 написал? Перечитай и подумай, где бы тебе еще в программе их расставить (в двух местах). Если, конечно, хочешь чтобы программа работала правильно.
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...