Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/50: Рейтинг темы: голосов - 50, средняя оценка - 4.80
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035

Подготовка к ЕГЭ

16.04.2011, 14:12. Показов 10846. Ответов 76
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Просьба к участникам форума, выкладывать в данную тему задания типа егэ.
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.04.2011, 14:12
Ответы с готовыми решениями:

Подготовка к олимпиаде !!!!
Здравствуйте уважаемые программисты! У меня после завтра олимпиада сегодня выдали примеры заданий . С некоторыми заданиями у меня...

Подготовка к гиа
драсте! Вообщем у меня экзамен через 3 дня( и мне надо решить задачи на QBasic) кому не трудно можете решить Билет № 10 Задача....

с4 егэ !
Алексей и Борис учатся в первом классе. Для изучения арифметики у каждого из них есть набор из нескольких карточек, на каждой из ...

76
 Аватар для -immortal-
60 / 60 / 43
Регистрация: 31.01.2011
Сообщений: 105
21.04.2011, 01:13
Студворк — интернет-сервис помощи студентам
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
CLS
PRINT "vvedite kol-vo razryadov"
DO
    INPUT "(2<n<20)"; n
LOOP UNTIL 2 < n < 20
CLS
PRINT "idet podschet..."
DIM a(n), b(n - 1)
FOR i = 10 ^ (n - 1) TO (10 ^ n - 1)
    p11 = i
    FOR i2 = 1 TO n
        p = INT(p11 / 10 ^ (n - i2))
        a(i2) = p
        p11 = p11 - p * 10 ^ (n - i2)
    NEXT
    FOR i2 = 1 TO n - 1
        p1 = a(i2) * 10 + a(i2 + 1)
        b(i2) = p1
    NEXT
    FOR i2 = 1 TO n - 1
        DATA 11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97
        FOR i3 = 1 TO 21
            READ p2
            IF b(i2) = p2 THEN c = c + 1
        NEXT
        RESTORE
    NEXT
    IF c = (n - 1) THEN k = k + 1
    c = 0
NEXT
CLS
PRINT "chislo razryadov:"; n
PRINT "chislo N-razryadov 'dvuhprostih' chisel:"; k
еще раз перечитал задание понял свою ошибку... вот верный вариант
P.S. если можно предыдущий удалите пожалуйста
2
21.04.2011, 05:52
 Комментарий модератора 
По велению администрации подчистил тему, далее прошу высказываться только по теме.
0
 Аватар для -immortal-
60 / 60 / 43
Регистрация: 31.01.2011
Сообщений: 105
21.04.2011, 10:21
убрал лишний массив и добавил процент выполнения:

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
CLS
PRINT "vvedite kol-vo razryadov"
DO
    INPUT "2<n<20"; n
LOOP UNTIL 2 < n < 20
DIM a(n)
FOR i = 10 ^ (n - 1) TO (10 ^ n - 1)
    p11 = i
    FOR i2 = 1 TO n
        p = INT(p11 / 10 ^ (n - i2))
        a(i2) = p
        p11 = p11 - p * 10 ^ (n - i2)
    NEXT
    FOR i2 = 1 TO n - 1
        DATA 11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97
        p1 = a(i2) * 10 + a(i2 + 1)
        FOR i3 = 1 TO 21
            READ p2
            IF p1 = p2 THEN c = c + 1
        NEXT
        RESTORE
    NEXT
    IF c = (n - 1) THEN k = k + 1
    c = 0
    CLS
    PRINT "idet podschet..."; (INT(i / ((10 ^ n - 1) - 10 ^ (n - 1)) * 1000) - 110) / 10; "%"
NEXT
CLS
PRINT "chislo razryadov:"; n
PRINT "chislo N-razryadov 'dvuhprostih' chisel:"; k
0
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
21.04.2011, 17:22  [ТС]
для небольшого n все отлично, но например уже для n=7 программа затрачивает на вычисление 20 минут...
0
 Аватар для -immortal-
60 / 60 / 43
Регистрация: 31.01.2011
Сообщений: 105
21.04.2011, 21:22
да я тоже заметил эту проблему... но упростить код не получается... по этому и ввел процент выполнения, хоть как то отслеживать продолжительность вычисления!
да и при n=7 программа сравнивает около 1134000000 раз... попробую сейчас переход сделать что бы лишний раз не сравнивала... но думаю ускориться не на много...

беру свои слова обратно...
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
CLS
PRINT "vvedite kol-vo razryadov"
DO
    INPUT "2<n<20"; n
LOOP UNTIL 2 < n < 20
DIM a(n)
FOR i = 10 ^ (n - 1) TO (10 ^ n - 1)
    p11 = i
    FOR i2 = 1 TO n
        p = INT(p11 / 10 ^ (n - i2))
        a(i2) = p
        p11 = p11 - p * 10 ^ (n - i2)
    NEXT
    FOR i2 = 1 TO n - 1
        DATA 11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97
        p1 = a(i2) * 10 + a(i2 + 1)
        FOR i3 = 1 TO 21
            READ p2
            IF p1 = p2 THEN c = c + 1
        NEXT
        IF c <> i2 THEN RESTORE: GOTO 1
        RESTORE
    NEXT
    IF c = (n - 1) THEN k = k + 1
    1 c = 0
    CLS
    PRINT "idet podschet..."; (INT(i / ((10 ^ n - 1) - 10 ^ (n - 1)) * 1000) - 110) / 10; "%"
NEXT
CLS
PRINT "chislo razryadov:"; n
PRINT "chislo N-razryadov 'dvuhprostih' chisel:"; k
1
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
30.04.2011, 13:24  [ТС]
исправил ошибки в программе про симметричные числа
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DIM a(9): u$ = "0123456789"
DO: INPUT b$: c = INSTR(u$, b$) - 1
    IF c >= 0 AND b$ <> "" THEN a(c) = a(c) + 1: q = q + 1
LOOP UNTIL b$ = "."
FOR i = 0 TO 9
    IF a(i) MOD 2 = 1 THEN a(i) = a(i) - 1: w$ = MID$(u$, i + 1, 1): k = k + 1
    a(i) = a(i) / 2
NEXT
IF k <= 1 AND q > 0 THEN
    FOR i = 9 TO 0 STEP -1: FOR j = 1 TO a(i)
            q$ = MID$(u$, i + 1, 1)
            n1$ = n1$ + q$: n2$ = q$ + n2$
    NEXT: NEXT
    c$ = n1$ + w$ + n2$
    IF LEFT$(c$, 1) <> "0" OR q = 1 THEN PRINT "YES", c$ ELSE PRINT "NO"
ELSE
    PRINT "NO"
END IF
Добавлено через 18 часов 19 минут
или с использованием ASCII. кстати как лучше?
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DIM a(9)
DO: INPUT b$: c = ASC(b$) - ASC("0")
    IF c >= 0 AND c <= 9 THEN a(c) = a(c) + 1: q = q + 1
LOOP UNTIL b$ = "."
FOR i = 0 TO 9
    IF a(i) MOD 2 = 1 THEN a(i) = a(i) - 1: w$ = CHR$(ASC("0") + i): k = k + 1
    a(i) = a(i) / 2
NEXT
IF k <= 1 AND q > 0 THEN
    FOR i = 9 TO 0 STEP -1: FOR j = 1 TO a(i)
            q$ = CHR$(ASC("0") + i)
            n1$ = n1$ + q$: n2$ = q$ + n2$
    NEXT: NEXT
    c$ = n1$ + w$ + n2$
    IF LEFT$(c$, 1) <> "0" OR q = 1 THEN PRINT "YES", c$ ELSE PRINT "NO"
ELSE
    PRINT "NO"
END IF
1
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
01.05.2011, 23:22  [ТС]
Как правильнее, использовать заготовку строки или ASCII таблицу?
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
02.05.2011, 10:40
Как правильнее, использовать заготовку строки или ASCII таблицу?
Правильнее если работает настолько быстро, насколько возможно и жрёт минимум памяти(в общем и целом, а не на отдельные массивы) + неприхотливость\универсальность проги(возможность перенести алгоритм на более низкий уровень).
За всем этим должен следить программист, сам давать оценку своим действиям и программам.
0
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
03.05.2011, 17:37  [ТС]
по скорости быстрее со строкой вроде. насчет возможности переноса на другие языки без понятия; знаю только qbasic и то не много
0
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
05.05.2011, 14:40  [ТС]
требуется ли объявлять тип переменных и обязательно ли в данном виде, например
QBasic/QuickBASIC
1
2
3
4
5
DIM A(N) AS INTEGER 
DIM I, X, Y AS INTEGER 
DIM S AS SINGLE 
 …
END
или можно
QBasic/QuickBASIC
1
DEFDBL A-Z
или вовсе !,$,#
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
05.05.2011, 14:53
softmob, сюдя по указаниям по оцениванию - требуется. Т.к. трактовать там могут как угодно, т.е. даже не обязательно, чтобы это была ошибка. Такие вот дела.
1
Платежеспособный зверь
 Аватар для кот Бегемот
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
05.05.2011, 14:55
softmob, если используешь функции или процедуры, то объявлять надо, а если программа простая, то можно вообще не объявлять, по умолчанию все переменные - вещественные. Целые переменные объявляются для ускорения работы программы, но это ускорение практически не ощутимо, поэтому никто этого не делает, чтобы не засорять программу знаком %, Переменные двойной точности объявлять надо, или использовать знак, то же самое со строковыми, например, объявление строкового массива может быть и таким:
DIM A$(15), и as string
1
0 / 0 / 0
Регистрация: 02.05.2011
Сообщений: 11
06.05.2011, 23:10
Некоторый интернет-магазин ежедневно принимает заказы от
покупателей. Имеется список всех заказов, сделанных в магазине в
2011 году. Напишите эффективную по времени работы и
используемой памяти программу, которая по этим данным
определяет, в какие дни недели магазин получал наименьшее число
заказов.
На вход программе в первой сроке подается количество заказов N.
В каждой из последующих N строк находится информация о датах
заказов в следующем формате:
<день> <месяц>
где <день> – число от 1 до 31, <месяц> – одно из 12 возможных
слов — «января», «февраля», «марта», «апреля», «мая», «июня»,
«июля», «августа», «сентября», «октября», «ноября», «декабря». Все
даты — корректные, даты различных заказов могут совпадать.
Пример входных данных:
5
4 апреля
5 апреля
6 апреля
7 апреля
8 апреля
Программа должна вывести список дней недели, в которые поступало
наименьшее число заказов. Для примера выше результат работы
программы должен быть таким:
суббота
воскресенье
Для справки – 1 января 2011 года было субботой.
Количество дней в месяцах года: январь – 31, февраль – 28, март – 31,
апрель – 30, май – 31, июнь – 30, июль – 31, август – 31, сентябрь – 31,
ноябрь – 30, декабрь – 31.
перепишите на бейсик и объясните
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
const
months: array[1..12] of string = ('января', 'февраля',
'марта', 'апреля', 'мая', 'июня', 'июля', 'августа',
'сентября', 'октября', 'ноября', 'декабря');
days: array[1..12] of integer = (31, 28, 31, 30, 31, 30, 31,
31, 30, 31, 30, 31);
daynames: array[0..6] of string = ('воскресенье',
'понедельник', 'вторник', 'среда', 'четверг', 'пятница',
'суббота');
var
n, i, j, min, day: integer;
month: string;
count: array[0..6] of integer;
c: char;
begin
for i := 0 to 6 do
count[i] := 0;
readln(n);
for i := 1 to n do
begin
readln(day, c, month);
j := 1;
while month <> months[j] do
begin
day := day + days[j];
j := j + 1;
end;
count[(day + 5) mod 7] := count[(day + 5) mod 7] + 1;
end;
min := n;
for i := 0 to 6 do
if count[i] < min then
min := count[i];
for i := 0 to 6 do
if count[i] = min then
writeln(daynames[i]);
end.
0
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
08.05.2011, 00:20  [ТС]
не проверял
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
DATA "ﭢ`"䥢ࠫ"̠ᢠ","/५"̠"ɮί","ɮ̯",""ģ⢠","ᥭ㯡ᯢ,"Ϊ㯡ᯢ,"ͮ"ĥʠ*
DIM a$(12), c$(6), d(6)
FOR i = 1 TO 12
READ a$(i)
NEXT
DATA "®᫠ơŭȥ","Ϯͥĥ̬ͨʢ,"âϠͨʢ,"⠥Ġ","禢¥࣢,"Я⭨栢,"⣡n⠢
FOR i = 0 TO 6
READ c$(i)
NEXT
CLS
INPUT "vvedite n"; n
FOR i = 1 TO n
INPUT "vvedite text"; b$
d = ASC(LEFT$(b$, 1)) - 48
FOR j = 1 TO 12
IF MID$(b$, 3, LEN(b$) - 2) = a$(j) THEN m = j
NEXT
a = (14 - m) \ 12
y = 2011 - a
m = m + 12 * a - 2
t = (7000 + (d + y + y \ 4 - y \ 100 + y \ 400 + ((31 * m) \ 12)))
d(t MOD 7) = d(t MOD 7) + 1
NEXT
min = n + 1
FOR i = 0 TO 6
IF d(i) < min AND d(i) <> 0 THEN min = d(i)
NEXT
FOR i = 1 TO 6
IF d(i) = min THEN PRINT c$(i)
NEXT
Вложения
Тип файла: rar untitled(2).rar (518 байт, 14 просмотров)
0
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
08.05.2011, 10:05  [ТС]
исправленная версия
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
DATA "января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"
DATA "воскресение","понедельник","вторник","среда","четверг","пятница","суббота"
DIM a$(12), c$(6), d(6)
FOR i = 1 TO 12
READ a$(i)
NEXT
FOR i = 0 TO 6
READ c$(i)
NEXT
CLS
INPUT "vvedite n"; n
FOR i = 1 TO n
INPUT "vvedite text"; b$
d = ASC(LEFT$(b$, 1)) - 48
FOR j = 1 TO 12
IF MID$(b$, 3, LEN(b$) - 2) = a$(j) THEN m = j
NEXT
a = (14 - m) \ 12
y = 2011 - a
m = m + 12 * a - 2
t = (7000 + (d + y + y \ 4 - y \ 100 + y \ 400 + ((31 * m) \ 12)))
d(t MOD 7) = d(t MOD 7) + 1
NEXT
min = n
FOR i = 0 TO 6
IF d(i) < min THEN min = d(i)
NEXT
FOR i = 0 TO 6
IF d(i) = min THEN PRINT c$(i)
NEXT
Вложения
Тип файла: rar 0505untitled(2).rar (516 байт, 14 просмотров)
0
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
08.05.2011, 20:14  [ТС]
Я так понимаю вариант на паскале не ваш? Похоже из ответов к тесту.
кстати вот небольшое объяснение к программе, скорее даже что то типа плана.
Создаем массивы с названиями месяцев и дней недели. Получаем количество заказов. Ввод дат. из первого символа строки получаем день, обрабатываем остальную часть сроки для получения номера месяца. Обрабатывам данные для получения для недели. В массив d считаваем сколько заказов в разные дни недели. Ищем минимальный элемент массива d. И печатаем дни в которые было наименьшее число заказов.
0
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
10.05.2011, 19:12  [ТС]
На вход программе подается текст заклинания, состоящего не более чем из 200 символов, заканчивающийся точкой (символ «точка» во входных данных единственный). Оно было зашифровано юным волшебником следующим образом. Сначала волшебник определил количество букв в самом коротком слове, обозначив полученное число К (слозом называется непрерывная последовательность латинских букв, слова друг от друга отделяются любыми другими символами, длина слова не превышает 20 символов). Затем он заменил каждую латинскую букву в заклинании на букву, стоящую в алфавите на К букв ранее (алфавит считается циклическим, то есть перед буквой А стоит буква Z), оставив другие символы неизменными. Строчные буквы при этом остались строчными, а прописные - прописными. Требуется написать программу на языке Паскаль или Бейсик, которая будет выводить на экран текст расшифрованного заклинания. Например, если зашифрованный текст был таким:
Zb Ra Ca Dab Ra,
то результат расшифровки должен быть следующим:
Bd Тс Еc Fcd Тс.

Добавлено через 21 минуту
проверьте
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
LINE INPUT "vvedite text: "; a$
k = 20
FOR i = 1 TO LEN(a$)
    q = ASC(LCASE$(MID$(a$, i, 1))) - ASC("a") + 1
    IF q >= 1 AND q <= 26 THEN
        b$ = b$ + MID$(a$, i, 1)
    ELSE
        IF LEN(b$) < k THEN k = LEN(b$)
        b$ = ""
    END IF
NEXT
FOR i = 1 TO LEN(a$)
    q = ASC(LCASE$(MID$(a$, i, 1))) - ASC("a") + 1
    IF q >= 1 AND q <= 26 THEN
        w = ASC(MID$(a$, i, 1)) - k
        IF q - k < 1 THEN w = w + 26
        MID$(a$, i, 1) = CHR$(w)
    END IF
NEXT
PRINT a$
Добавлено через 4 часа 58 минут
есть пара вопросов:
1)происходит ли проверка 3 части на компьютере или просто смотрят алгоритм, ищут ошибки и т.д.?
2)например в части задачи требуется делить целые числа на 2 и округлять до целого в большую сторону. по идее достаточно cint(b/2), но в таком случае не всегда корректно будет срабатывать.(cint(1/2)=0,cint(3/2)=2,cint(5/2)=2). получается при правильном алгоритме на компьютере программа выдаст неверный результат. можно конечно обойти(например FIX((b / 2) + .5)), но все же первое что придет в голову использовать стандартную функцию qbasic: CINT(A) – математическое округление.
как с подобным поступят при оценивание.
1
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
19.05.2011, 20:43  [ТС]
На вход программы подаются фамилии и имена учеников. Известно, что общее количество учеников не превосходит 100.
В первой строке вводится количество учеников, принимавших участие в соревнованиях, N. Далее следуют N строк, имеющих следующий формат: <Фамилия> <Имя>. Здесь <Фамилия> - строка, состоящая не более чем из 20 символов; <Имя> - строка, состоящая не более чем из 15 символов; при этом <Фамилия> и <Имя> разделены одним пробелом.
Примеры входных строк:
Иванова Мария
Петров Сергей
Требуется написать программу, которая формирует и печатает уникальный логин для каждого ученика по следующему правилу: если фамилия встречается первый раз, то логин – это данная фамилия, если фамилия встречается второй раз, то логин – это фамилия, в конец которой приписывается число 2 и т.д.
Например, для входной последовательности
Иванова Мария
Петров Сергей
Бойцова Екатерина
Петров Иван
Иванова Наташа
будут сформированы следующие логины:
Иванова
Петров
Бойцова
Петров2
Иванова2
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CLS
INPUT "vvedite n"; n
DIM a$(n)
FOR i = 1 TO n
    INPUT b$
    a$(i) = MID$(b$, 1, INSTR(b$, " ") - 1)
NEXT
FOR i = 1 TO n
    k = 2
    FOR j = i + 1 TO n
        IF a$(i) = a$(j) THEN a$(j) = a$(j) + LTRIM$(STR$(k)): k = k + 1
    NEXT
NEXT
PRINT STRING$(80, 196)
FOR i = 1 TO n
    PRINT a$(i)
NEXT
1
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
23.05.2011, 20:52  [ТС]
На автозаправочных станциях (АЗС) продается бензин с маркировкой 92, 95 и 98. В городе N был проведен мониторинг цены бензина на различных АЗС.
Напишите эффективную по времени работы и по используемой памяти программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет определять для каждого вида бензина, сколько АЗС продают его дешевле всего. На вход программе в первой строке подается число данных о стоимости бензина. В каждой из последующих N строк находится информация в следующем формате:
<Компания> <Улица> <Марка> <Цена>
где <Компания> – строка, состоящая не более, чем из 20 символов без пробелов, <Улица> – строка, состоящая не более, чем из 20 символов без пробелов, <Марка> – одно из чисел – 92, 95 или 98, <Цена> – целое число в диапазоне от 1000 до 3000, обозначающее стоимость одного литра бензина в копейках. <Компания> и <Улица>, <Улица> и <Марка>, а также <Марка> и <цена> разделены ровно одним пробелом. Пример входной строки:
Синойл Цветочная 95 2250
Программа должна выводить через пробел 3 числа – количество АЗС, продающих дешевле всего 92-й, 95-й и 98-й бензин соответственно. Если бензин какой-то марки нигде не продавался, то следует вывести 0. Пример выходных данных:
12 1 0
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CLS
INPUT "vvedite n"; n
min92 = 3001: min95 = 3001: min98 = 30001
FOR i = 1 TO n
    LINE INPUT a$
    b$ = RIGHT$(a$, 7)
    c = VAL(LEFT$(b$, 2))
    d = VAL(RIGHT$(b$, 4))
    SELECT CASE c
        CASE IS = 92
            IF d < min92 THEN min92 = d: s92 = 0
            IF d = min92 THEN s92 = s92 + 1
        CASE IS = 95
            IF d < min95 THEN min95 = d: s95 = 0
            IF d = min95 THEN s95 = s95 + 1
        CASE IS = 98
            IF d < min98 THEN min98 = d: s98 = 0
            IF d = min98 THEN s98 = s98 + 1
    END SELECT
NEXT
PRINT s92, s95, s98
Добавлено через 3 часа 51 минуту
Имеется список учеников разных школ, сдававших экзамен по информатике, с указанием их фамилии, имени, школы и набранного балла. Напишите эффективную по времени работы и по используемой памяти программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет определять номера школ, в которых средний балл выше, чем средний по району. Если такая школа одна, нужно вывести и средний балл (в следующей строчке). Известно, что информатику сдавали не менее 5 учеников. Кроме того, школ с некоторыми номерами не существует.
На вход программе в первой строке подается количество учеников списке N. В каждой из последующих N строк находится информация в следующем формате:
<Фамилия> <Имя> <Школа> <Балл>
где <Фамилия> – строка, состоящая не более, чем из 20 символов без пробелов, <Имя> – строка, состоящая не более, чем из 20 символов без пробелов, <Школа> – целое число от 1 до 99, <Балл> – целое число от 1 до 100.
Пример входной строки:
Иванов Сергей 50 87
Пример выходных данных, когда найдено три школы:
50 87 23
Пример вывода в том случае, когда найдена одна школа:
18
Средний балл = 85
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CLS
INPUT "vvedite n"; n
DIM s(99), k(99)
FOR i = 1 TO n
    INPUT "vvedite text"; a$
    b$ = RIGHT$(a$, 6)
    FOR j = 1 TO LEN(b$)
        q = ASC(MID$(b$, j, 1)) - ASC("0")
        IF q >= 0 AND q <= 9 THEN c = c * 10 + q ELSE w = c: c = 0
    NEXT
    s = s + c
    s(w) = s(w) + c
    k(w) = k(w) + 1
NEXT
FOR i = 1 TO 99
    IF k(i) > 0 THEN s(i) = s(i) \ k(i)
NEXT
sr = s \ n
FOR i = 1 TO 99
    IF s(i) >= sr THEN PRINT i: r = r + 1: t = i
NEXT
IF r = 1 THEN PRINT "sr="; s(t)
1
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
25.05.2011, 19:48  [ТС]
Имеется список людей с указанием их фамилии, имени и даты
рождения. Напишите эффективную по времени работы и по
используемой памяти программу (укажите используемую версию
языка программирования, например, Borland Pascal 7.0), которая
будет определять самого старшего человека из этого списка и
выводить его фамилию, имя и дату рождения, а если имеется
несколько самых старших людей с одинаковой датой рождения, то
определять их количество.
На вход программе в первой строке подается количество людей в
списке N. В каждой из последующих N строк находится информация
в следующем формате:
<Фамилия> <Имя> <Дата рождения>
где <Фамилия> – строка, состоящая не более, чем из 20 символов без
пробелов,
<Имя> – строка, состоящая не более, чем из 20 символов без
пробелов,
<Дата рождения> – стока, имеющая вид ДД.ММ.ГГГГ, где ДД –
двузначное число от 01 до 31, ММ – двузначное число от 01 до 12,
ГГГГ – четырехзначное число от 1800 до 2100.
Пример входной строки:
Иванов Сергей 27.03.1993
Программа должна вывести фамилию и имя самого старшего
человека в списке.
Пример выходных данных:
Иванов Сергей
Если таких людей, несколько, то программа должна вывести их
количество. Пример вывода в этом случае:
3
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CLS
INPUT "vvedite n"; n
gm = 2101
FOR i = 1 TO n
    LINE INPUT "vvedite dannye:"; a$
    w = 0
    b$ = RIGHT$(a$, 10)
    a$ = LEFT$(a$, LEN(a$) - 11)
    d = VAL(LEFT$(b$, 2))
    m = VAL(MID$(b$, 4, 2))
    g = VAL(RIGHT$(b$, 4))
    IF g < gm THEN w = 1
    IF g = gm AND m < mm THEN w = 1
    IF g = gm AND m = mm AND d < dm THEN w = 1
    IF w = 1 THEN gm = g: mm = m: dm = d: q$ = a$: k = 0
    IF g = gm AND m = mm AND d = dm THEN k = k + 1
NEXT
IF k = 1 THEN PRINT q$ ELSE PRINT k
Добавлено через 30 минут
На вход программе подаются сведения о пассажирах, желающих сдать свой багаж в камеру хранении на заранее известное время до полуночи. В первой строке сообщается количество пассажиров N, которое не меньше 3, но не превосходит 1000, и количество ячеек в камере хранения M, которое не меньше 10, но не превосходит 1000. Каждая из следующих N строк имеет следующий формат: <Фамилия> <время сдачи багажа> <время освобождения ячейки>, где <Фамилия> - строка, состоящая не более чем из 20 символов, <время сдачи багажа> - через двоеточие два целых числа, соответствующие часам (от 00 до 23 – ровно 2 символа) и минутам (от 00 до 59 – ровно 2 символа), <время освобождения ячейки> имеет тот же формат. <Фамилия> и <время сдачи багажа>, <время сдачи багажа> и <время освобождения ячейки> разделены одним пробелом.
Сведения отсортированы в порядке времени сдачи багажа. Каждому из пассажиров в камере хранения выделяется свободная ячейка с минимальным номером. Если в момент сдачи багажа свободных ячеек нет, то пассажир уходит, не дожидаясь освобождения одной из них.
Требуется написать программу, которая будет выводить на экран для каждого пассажира номер ячейки, которая ему будет предоставлена (можно сразу после ввода данных очередного пассажира). Если ячейка пассажиру не предоставлена, то его фамилия не печатается.
Пример входных данных:
3 10
Иванов 09:45 12:00
Петров 10:00 11:00
Сидоров 12:00 13:12
Результат работы программы на этих входных данных:
Иванов 1
Петров 2
Сидоров 1
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
CLS
INPUT "vvedite n,k"; n, k
DIM a(k)
FOR i = 1 TO n
    LINE INPUT "vvedite dannye:"; b$
    c$ = LEFT$(b$, LEN(b$) - 12)
    b$ = RIGHT$(b$, 11)
    time1 = VAL(LEFT$(b$, 2)) * 60 + VAL(MID$(b$, 4, 2))
    time2 = VAL(MID$(b$, 7, 2)) * 60 + VAL(RIGHT$(b$, 2))
    FOR j = 1 TO k
        IF a(j) <= time1 THEN a(j) = time2: PRINT c$; j: w = j: EXIT FOR
    NEXT
NEXT
Добавлено через 10 минут
На вход программе подается предложение на английском языке,
заканчивающееся точкой (в программе на языке Бейсик символы можно
вводить по одному в строке, пока не будет введена точка, или считывать
данные из файла). Напишите эффективную, в том числе и по
используемой памяти, программу (укажите используемую версию языка
программирования, например, Borland Pascal 7.0), которая будет
определять, можно ли переставить английские буквы этого предложения
так, чтобы полученное слово без учета остальных символов (отличных от
английских букв) читалось одинаково как слева направо, так и справа
налево. Строчные и прописные буквы при этом считаются
неразличимыми.
Если это невозможно, то программа должна вывести на экран слово
“NO”. А если возможно, то в первой строке следует вывести слово “YES”,
а во второй – искомое симметричное слово прописными буквами. Если
таких слов несколько, то программа должна выводить первое в
алфавитном порядке слово. Например, пусть на вход подаются
следующие символы:
Do not to do.
В данном случае программа должна вывести
YES
DOOTNTOOD
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
DIM a(26)
DO
    LINE INPUT b$
    IF b$ <> "" THEN c = ASC(LCASE$(b$)) - ASC("a") + 1 ELSE c = 0
    IF c >= 1 AND c <= 26 THEN a(c) = a(c) + 1: q = q + 1
LOOP UNTIL b$ = "."
FOR i = 1 TO 26
    IF a(i) MOD 2 = 1 THEN a(i) = a(i) - 1: w$ = CHR$(ASC("A") + i - 1): k = k + 1
    a(i) = a(i) / 2
NEXT
IF k <= 1 AND q > 0 THEN
    FOR i = 1 TO 26
        FOR j = 1 TO a(i)
            q$ = CHR$(ASC("A") + i - 1)
            n1$ = n1$ + q$: n2$ = q$ + n2$
        NEXT
    NEXT
    c$ = n1$ + w$ + n2$
    PRINT "YES", c$
ELSE
    PRINT "NO"
END IF
Добавлено через 39 минут
На вход программе подается последовательность цифр. Ввод этих символов заканчивается точкой (другие символы, отличные от "." и цифр "0".."9", во входных данных отсутствуют; в программе на языке Бейсик символы можно вводить по одному в строке, пока не будет введена точка). Требуется написать эффективную программу (укажите используемую версию языка программирования, например. Borland Pascal 7.0), которая будет печатать цифры, встречающиеся во входной последовательности, в порядке увеличения частоты их встречаемости. Каждая цифра при этом должна быть распечатана один раз. Если какие-то цифры встречаются одинаковое число раз. то они выводятся по возрастанию. Например, пусть на вход подаются следующие символы: 1232432.

В данном случае программа должна вывести: 1432
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CLS
DIM a(9)
INPUT b$
FOR i = 1 TO LEN(b$) - 1
    q = ASC(MID$(b$, i, 1)) - ASC("0")
    a(q) = a(q) + 1
NEXT
FOR i = 0 TO 9
    IF a(i) <> 0 THEN w = w + 1
NEXT
FOR i = 1 TO w
    min = LEN(b$) + 1
    a(k) = 0
    FOR j = 9 TO 0 STEP -1
        IF a(j) > 0 AND a(j) <= min THEN min = a(j): k = j
    NEXT
    IF k >= 0 THEN c$ = c$ + CHR$(ASC("0") + k)
NEXT
PRINT c$
Добавлено через 36 минут
Имеется список сотрудников организации с указанием их фамилии,
имени и даты рождения. Администрация ежедневно поздравляет всех
сотрудников, родившихся в этот день. Напишите эффективную по
времени работы и по используемой памяти программу (укажите
используемую версию языка программирования, например, Borland
Pascal 7.0), которая будет определять, в какой из дней года родилось
больше всего сотрудников и выводить этот день (или несколько дней).
На вход программе в первой строке подается количество людей в списке N. Значение N может быть велико, например, может быть
больше 10.000. В каждой из последующих N строк находится
информация в следующем формате:
<Фамилия> <Имя> <Дата рождения>
где <Фамилия> – строка, состоящая не более, чем из 20 символов без
пробелов,
<Имя> – строка, состоящая не более, чем из 20 символов без пробелов,
<Дата рождения> – стока, имеющая вид ДД.ММ.ГГГГ, где ДД –
двузначное число от 01 до 31, ММ – двузначное число от 01 до 12, ГГГГ –
четырехзначное число от 1800 до 2100.
Пример входной строки:
Иванов Сергей 27.03.1993
Программа должна вывести один или несколько дней года (по одному
в строке) в формате ДД.ММ, при этом можно не выводить начальный
ноль в номере дня или месяца.
Пример выходных данных:
27.3
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CLS
DIM a(12, 31)
INPUT "vvedite n"; n
FOR i = 1 TO n
    LINE INPUT "vvedite dannye:"; a$
    d = VAL(MID$(a$, LEN(a$) - 9, 2))
    m = VAL(MID$(a$, LEN(a$) - 6, 2))
    a(m, d) = a(m, d) + 1
NEXT
FOR i = 1 TO 12
    FOR j = 1 TO 31
        IF a(i, j) > max THEN max = a(i, j)
    NEXT
NEXT
FOR i = 1 TO 12
    FOR j = 1 TO 31
        IF a(i, j) = max THEN PRINT LTRIM$(STR$(j)) + "." + LTRIM$(STR$(i))
    NEXT
NEXT
Добавлено через 18 минут
На вход программы подаются произвольные алфавитно-цифровые символы. Ввод этих символов заканчивается точкой. Требуется написать программу, которая будет печатать последовательность строчных английских букв ('a' 'b'... 'z') из входной последовательности и частот их повторения. Печать должна происходить в алфавитном порядке. Например, пусть на вход подаются следующие символы:
fhb5kbfыshfm.
В этом случае программа должна вывести
b2
f3
h2
kl
ml
s1
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
CLS
DIM b(26)
LINE INPUT a$
FOR i = 1 TO LEN(a$) - 1
    q = ASC(MID$(a$, i, 1)) - ASC("a") + 1
    IF q >= 1 AND q <= 26 THEN b(q) = b(q) + 1
NEXT
FOR i = 1 TO 26
    IF b(i) > 0 THEN PRINT CHR$(ASC("a") + i - 1) + LTRIM$(STR$(b(i)))
NEXT
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.05.2011, 19:48

Задание с4 из егэ
Помогите решить данную задачу, вот примерное условие: надо составить программу, которая бы из входящей строки, в которую входят названия...

Арифметический корень (книга Мальцев Математика ЕГЭ минимум Подготовка к ЕГЭ 2016)
Помогите, может у кого есть решибник к книге Мальцев Математика ЕГЭ минимум Подготовка к ЕГЭ 2016. Если кому то не жалко времени, решите....

Подготовка к ЕГЭ
№1 Диагональ равнобокой трапеции перпендикулярна боковой стороне. Найдите площадь трапеции, если высота равна 12 см, а диагональ - 20 см....

Подготовка к ЕГЭ'
Здравия желаю всем, кто посетил и ещё не посещал данную тему. Буду немногословен и сразу перейду к сути: дан прямоугольный треугольник ABC...

Подготовка к Егэ по информатике
Прошу не ругаться администрацию, если не там, где нужно, создал тему, ибо понятия не имею куда её можно ещё запилить. Здесь, с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru