Помогите, пожалуйста, с задачей на массивы
Сдвинуть элементы массива по кругу на два элемента против часовой стрелки. ()
Вот начал а дальше не знаю как(( program vlevo; var i,n,s: integer; a:array[1..100] of integer; begin write('n='); read(n); for i:=1 to n do begin write('a[',i,']='); readln(a[i]); end; |
Цитата:
Код:
Uses CRT; |
спасибо большое!) а можете проверить ещё одну задачу, правильно ли?
Вычислить среднее арифметическое введенных чисел, количество введенных чисел и количество введенных нулей. При вводе числа 777 закончить работу. program qw; var tmp, zero, total, sum: integer; sred: real; begin zero := 0; total := 0; sum := 0; repeat read(tmp); if tmp <> 777 then begin inc(total); sum := sum + tmp; if tmp = 0 then inc(zero); end; until tmp = 777; sred := sum / total; write('Всего чисел: ', total, ' Из них нулей - ', zero, ' Среднее арифметическое = ', sred); end. |
Цитата:
1. Для переменной sum лучше выбрать формат LongInt - мало ли, какие числа вводятся и сколько, может получиться так, что сумма выскочит за границы формата Integer (32000 с копейками). 2. Ввод чисел желательно оформить с экранной подсказкой - пустой экран с моргающим маркером плохо смотрится. 3. Есть некая тонкость с оператором ввода. Лучше использовать не read, а readln. Не буду вдаваться в подробности, но read - "плохой" оператор, он как бы не закрывает ввод, а оставляет систему в ожидании следующего ввода, что приводит, в частности, к несрабатыванию остановок, см. п.4. 4. В конце программы желательно поставить команду readln без параметров. Дойдя до нее, программа остановится и покажет выведенный на экран результат расчета. Но это произойдет только, если в программе для ввода используются операторы readln, а не read. 5. Для среднего лучше (просто красивее) использовать форматный вывод. Например, формат 0:3 означает, что число будет выведено с тремя знаками после десятичной точки. С учетом поправок: Код:
program qw; |
помогите пожалуйста вот с этой задачей((
Заданы М строк символов, которые вводятся с клавиатуры. Каждая заданная строка представляет собой текст. Исключить из этих текстов все гласные буквы. |
Заданы М строк символов, которые вводятся с клавиатуры. Каждая заданная строка представляет собой текст. Исключить из этих текстов все гласные буквы.
правильно?? Program z1; uses crt; const glas = ['а','е','и','о','у','э','ю','я','А','Е','И','О','У ','Э','Ю','Я']; var s:string; i,j:integer; c:char; a:array[1..100] of string; begin clrscr; i:=0; Writeln('Будете вводить данные'); readln(c); While ( c in ['Y','y','Д','д']) or (i=100) do begin inc(i); Writeln('Введите ',i,' ю строку'); readln(s); for j:=1 to length(s) do begin if not(s[j] in glas) then a[i]:=a[i]+s[j] end; Writeln('Вводить еще информацию? '); readln(c); end; for j:=1 to i do if a[j]<>'' then Writeln(a[j]); readln end. |
Цитата:
1. В перечне множества Glas Вы поставили пробел после буквы "У" - абсолютно недопустимо и приводит к ошибке! 2. Неверно сформулированы условия цикла While...do. 3. В предпоследней строке условный оператор if a[j]<>'' then - лишний. Вот подредактированный вариант: Код:
uses crt; |
Часовой пояс GMT +4, время: 07:40. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.