Информатика

2 621 задачавместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
20187#20187
Требовалось написать программу, при выполнении которой с клавиатуры вводится натуральное число, не превосходящее 108, и выводится его первая (старшая) цифра. Ученик написал такую программу:
Паскаль Си
var n: longint;
begin
(*)
(1)  readln(n);
(2)  while n > 10 do begin
(3)    n := n mod 10
(4)  end;
(5)  writeln ( n )
end.
#include<stdio.h>
main(){
  int n;
(*)
(1)  scanf("%d",&n);
(2)  while (n > 10) {
(3)    n = n % 10;
(4)  }
(5)  printf("%d", n);
}
 
Последовательно выполните следующее.
1.       Напишите, что выведет эта программа при вводе числа 1984.
2.       Приведите пример числа, при вводе которого программа выдаст верный ответ.
3.       Найдите в программе все ошибки (их может быть одна или несколько).
Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Обратите внимание: вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.

В качестве ответа загрузите исправленную программу, в которой добавлена строка на место (*). Строка должна содержать оператор вывода (с переходом на новую строку после выполнения) номеров строк, в которых допущена ошибка (выводить нужно ТОЛЬКО номера слитно без пробелов и запятых)
например:
Паскаль Си
...
begin
(*)  writeln('123');

... далее исправленная программа

end.
#include<stdio.h>
main(){
...
(*)  printf("123\n");
... далее исправленная программа
}

20186#20186
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится количество цифр этого числа.   Программист торопился и написал программу неправильно:  
Паскаль Си
var N: longint;
    count: integer; 
begin
(*)
(1)  readln(N);
(2)  count := 1;
(3)  while N > 1 do begin
(4)    count := count + 1;
(5)    N := N div 10
(6)  end;
(7)  writeln ( count )
end.
#include<stdio.h>
main(){
  int N;
  int count;
(*)
(1)  scanf("%d",&N);
(2)  count = 1;
(3)  while (N > 1) {
(4)    count = count + 1;
(5)    N = N / 10;
(6)  }
(7)  printf("%d", count);
}
Последовательно выполните следующее:
1.       Определите, что выведет программа при вводе числа 123.
2.       Укажите одно число, для которого программа выводит неверный результат.
3.       Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
а)      выпишите строку, в которой сделана ошибка;
б)      укажите, как надо исправить ошибку -  приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, имеющую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

В качестве ответа загрузите исправленную программу, в которой добавлена строка на место (*). Строка должна содержать оператор вывода (с переходом на новую строку после выполнения) номеров строк, в которых допущена ошибка (выводить нужно ТОЛЬКО номера слитно без пробелов и запятых)
например:
Паскаль Си
...
begin
(*)  writeln('123');

... далее исправленная программа

end.
#include<stdio.h>
main(){
...
(*)  printf("123\n");
... далее исправленная программа
}
 

20185#20185
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальную цифру этого числа. Программист торопился и написал программу неправильно:
Паскаль Си
var N: longint;
    digit, min_digit: integer; 
begin
(*)
(1)  readln(N);
(2)  min_digit := 0;
(3)  while N > 0 do begin
(4)    digit := N mod 10;
(5)    if digit > min_digit then
(6)       min_digit := digit;
(7)    N := N div 10
(8)  end;
(9)  writeln ( min_digit)
end.
#include<stdio.h>
main(){
  int N;
  int digit, min_digit ;
(*)
(1)  scanf("%d",&N);
(2)  min_digit = 0;
(3)  while (N > 0) {
(4)    digit = N % 10;
(5)    if (digit > min_digit)
(6)       min_digit = digit;
(7)    N = N / 10;
(8)  }
(9)  printf("%d", min_digit );
}
Последовательно выполните следующее:
1.       Определите, что выведет программа при вводе числа 532 (выполните устно).
2.       Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
а)      выпишите строку, в которой сделана ошибка;
б)      укажите, как надо исправить ошибку -  приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, имеющую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

В качестве ответа загрузите исправленную программу, в которой добавлена строка на место (*). Строка должна содержать оператор вывода (с переходом на новую строку после выполнения) номеров строк, в которых допущена ошибка (выводить нужно ТОЛЬКО номера слитно без пробелов и запятых)
например:
Паскаль Си
...
begin
(*)  writeln('123');

... далее исправленная программа

end.
#include<stdio.h>
main(){
...
(*)  printf("123\n");
... далее исправленная программа
}
 

20184#20184
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится произведение цифр этого числа.   Программист торопился и написал программу неправильно:  
Паскаль Си
var N, product: longint;
    digit: integer; 
begin
(*)
(1)  readln(N);
(2)  product := N mod 10;
(3)  while N >= 10 do begin
(4)    digit := N mod 10;
(5)    product := product * digit;
(6)    N := N div 10
(7)  end;
(8)  writeln ( product )
end.
#include<stdio.h>
main(){
  int N, product;
  int digit;
(*)
(1)  scanf("%d",&N);
(2)  product = N % 10;
(3)  while (N >= 10) {
(4)    digit = N % 10;
(5)    product = product * digit;
(6)    N = N / 10;
(7)  }
(8)  printf("%d", product );
}
Последовательно выполните следующее:
1.       Определите, что выведет программа при вводе числа 532 (выполните задание устно).
2.       Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
а)      выпишите строку, в которой сделана ошибка;
б)      укажите, как надо исправить ошибку -  приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, имеющую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

В качестве ответа загрузите исправленную программу, в которой добавлена строка на место (*). Строка должна содержать оператор вывода (с переходом на новую строку после выполнения) номеров строк, в которых допущена ошибка (выводить нужно ТОЛЬКО номера слитно без пробелов и запятых)
например:
Паскаль Си
...
begin
(*)  writeln('123');

... далее исправленная программа

end.
#include<stdio.h>
main(){
...
(*)  printf("123\n");
... далее исправленная программа
}

В неориентированном графе требуется найти длину кратчайшего пути между двумя вершинами.
 
Формат входных данных
В первой строке входных данных записано число N - количество вершин в графе (1 <= N <= 100). Далее с новой строки записана матрица смежности (0 обозначает отсутствие ребра, 1 - наличие ребра). В последней строке записаны номера двух вершин - начальной и конечной.
 
Формат выходных данных 
Выведите длину кратчайшего пути. Если пути не существует, выведите одно число -1.
18815#18815
Напишите программу, которая в последовательности целых чисел определяет сумму положительных чисел, кратных 5. Программа получает на вход целые числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 – признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1000. Введённые числа по модулю не превышают 30000. Программа должна вывести одно число: сумму положительных чисел, кратных 5. Пример работы программы
 
Входные данные
-25
45
20
1
0
Выходные данные
65

18813#18813
Напишите программу, которая в последовательности целых чисел определяет количество положительных чисел, кратных 11. Программа получает на вход целые числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 – признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1000. Введённые числа по модулю не превышают 30 000. Программа должна вывести одно число: количество положительных чисел, кратных 11. Пример работы программы
 
Входные данные
-22
44
22
1
0
Выходные данные
2

18801#18801
Напишите программу, которая вычисляет произведение членов последовательности, кратных 5. Программа получает на вход целые числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 – признак окончания ввода, не входит в последовательность) . Количество чисел не превышает 1000. Введённые числа по модулю не превышают 30 000. Программа должна вывести одно число: произведение членов последовательности, кратных 5. Пример работы программы
 
Входные данные
8
-5
2
0
Выходные данные
-5

18796#18796
Напишите программу, которая в последовательности целых чисел определяет разность максимального и минимального чисел. Программа получает на вход целые числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 – признак окончания ввода, не входит в последовательность) . Количество чисел не превышает 1000. Введённые числа по модулю не превышают 30 000. Программа должна вывести одно число: разность максимального и минимального чисел.
Пример работы программы
 
Входные данные
8
-5
2
0
Выходные данные
13

Даны две квадратных таблицы чисел. Требуется построить третью, 
каждый элемент которой равен сумме элементов, стоящих на том же месте
в 1-й и 2-й таблицах.
 
Входные данные
Во входном файле записано сначала число N, затем записана первая таблица,
а после нее - вторая. Элементы таблиц - числа от 0 до 100. 
1<=N<=100.
 
Выходные данные
В выходной файл выведите результирующую таблицу.
 
Пример входного файла
3
1 2 3
4 5 6
7 8 9
 
11 12 13
14 15 16
17 18 19
 
Пример выходного файла
12 14 16
18 20 22
24 26 28
 
Симметричная матрица
 
Дана квадратная матрица. Проверить, является ли она симметричной относительно
главной диагонали.
 
Входные данные. В файле INPUT.TXT записано число n (0<n<=100). 
В следующих n строках записано по n целых чисел от -32768 до 32767. 
 
Выходные данные. В файл OUTPUT.TXT вывести YES, 
если матрица симметрична относительно главной диагонали, иначе вывести NO.
 
Пример файла INPUT.TXT
3
1 2 3
2 4 5
3 5 6
 
Пример файла OUTPUT.TXT
YES
 
Нолики
 
В матрице найти положение нулевого элемента.
 
Входные данные
Формат входных данных как в примере.
Хотя бы один нулевой элемент в матрице всегда существует.
 
Выходные данные
Вывести сначала номер строки, а затем - номер столбца нулевого элемента. 
Если в матрице несколько нулей, выдать позицию любого из них.
 
Пример входного файла
3 4
0 1 2 3
4 5 0 1
2 3 4 5
 
Пример выходного файла
2 3
 
ГАИ#18782
ГАИ
 
Вдоль шоссе в точках X1,X2,...,XN расположены посты ГАИ. 
В точке X произошло мелкое ДТП (дорожно-транспортное происшествие).
Требуется определить, какой из постов ГАИ расположен ближе всего
к этой точке, чтобы с него послать к месту происшествия наряд милиции.
 
Входные данные
Во входном файле записано сначала число N - количество пунктов ГАИ. (1<=N<=100)
Далее следуют координаты расположения постов ГАИ на прямом шоссе
(целые числа от -10000 до 10000). Далее идет координата точки,
в которой произошло ДТМ (целое число от -10000 до 10000).
 
Выходные данные
В выходной файл требуется вывести одно число - номер поста ГАИ,
с которого нужно послать наряд к месту ДТП. Если несколько постов
ГАИ находятся на одинаковом расстоянии от точки ДТП, выведите любой из них.
 
Пример входного файла
5
10 2 8 -7 3
7
 
Пример выходного файла
3
Минимум в таблице
 
Дана таблица чисел, состоящая из N строк по M чисел в каждой.
Все числа в таблице - натуральные, не превышающие 1000.
Требуется найти наименьшее число в этой таблице.
 
Входные данные
Во входном файле записано сначала число N - количество строк,
а затем число M - количество столбцом таблицы (1<=N<=100, 1<=M<=100).
Далее идет сама таблица.
 
Выходные данные
В выходной файл выведите наименьшее число, которое встречается в таблице.
 
Пример входного файла
3 4
6 4 10 4
3 7 5 7
6 3 4 3
 
Пример выходного файла
3
 
 
Сортировка времени
 
Во входном файле записано сначала число N (1<=N<=100), а затем
N моментов времени. Каждый момент времени задается 3 целыми числами - 
часы (от 0 до 23), минуты (от 0 до 60) и секунды (от 0 до 60).
 
В выходной файл выведите моменты времени, упорядоченные в порядке
неубывания (момент времени также выводится в виде трех чисел, ведущие нули
выводить не обязательно)
 
Пример входного файла:
4
10 20 30
7 30 00
23 59 59
13 30 30
 
Пример выходного файла:
7 30 0
10 20 30
13 30 30
23 59 59
 
Дан массив. Требуется удалить из него элемент, стоящий на месте номер B, сдвинув все последующие элементы влево.
 
Входные данные
Во входном файле записано сначала число N - количество элементов массива (2<=N<=100), затем N чисел из диапазона Integer - элементы массива, а затем число B (1<=B<=N).
 
Выходные данные
В выходной файл выведите N-1 число - элементы массива с удаленным B-м элементом.
 
Примечание
Вы должны удалить элемент непосредственно из массива, а не сделать вид при выводе данных, что у вас такого элемента нет. Также вы не  должны для этого заводить в программе дополнительный массив.
 
Формат входных данных
Во входных данных записана последовательность натуральных чисел, не превышающих 1000. Последовательность заканчивается числом 0. Количество чисел в последовательности не превышает 100.
 
Формат выходных данных
Выведите в выходной файл количество чисел в последовательности (не считая 0), а потом сами числа.
 
В некотором государстве действует N фирм, конкурирующих между собой.
У каждой фирмы есть некоторая прибыль в год, равная V[i]
американских рублей.  У царя есть любимые фирмы,
а есть нелюбимые. Соответственно, налог для всех фирм разный и назначается
царем в индивидуальном порядке.
Налог на i-ую фирму равен p[i] процентов.
Собиратели статистики решили посчитать,
с какой фирмы в государственную казну идет наибольший доход
(в казну идут все налоги). К сожалению, они не учили в детстве
ни математику, ни информатику (так что учитесь, дети!),
и их задача резко осложняется. Помогите им в этой нелегкой задаче.
 
Входные данные
-----------------------
сначала записано число N - число фирм (0<N<=100).
Далее идет N целых неотрицательных чисел, не превышающих 154 - доходы фирм,
а затем еще N целых чисел от 0 до 100 - налоги фирм в процентах.
 
Выходные данные
------------------------
В выходной файл выведите одно число - номер фирмы, от которой государство
получает наибольший налог. Если таких фирм несколько, выведите любую из них.
 
Пример входного файла:
3
100 1 50
0 100 3
 
Пример выходного файла:
3
 
(Та же задача, что и "Количество единиц, двоек, троек и т.д. #1", только может быть введено до 100000 чисел)
 
Вводятся числа от 1 до 9 до тех пор,
пока не будет введен 0. Всего будет введено не более 100000 чисел
 
Посчитать количество единиц в этой последовательности,
количество двоек, количество троек и так далее (в выходном
файле всегда должно быть 9 чисел).
 
 
Пример входного файла
1 1 4 1 5 8 6 3 5 1 0
 
Пример выходного файла:
4 0 1 1 2 1 0 1 0
 
Вводятся числа от 1 до 9 до тех пор, 
пока не будет введен 0. Всего будет введено не больше 100 чисел.
 
Посчитать количество единиц в этой последовательности, 
количество двоек, количество троек и так далее (в выходном
файле всегда должно быть 9 чисел).
 
 
Пример ввода:
1 1 4 1 5 8 6 3 5 1 0         
 
Пример вывода:
4 0 1 1 2 1 0 1 0
 
Поделиться
Класснуть