Практика программирования (Бейсик, Си, Паскаль)



         

Задачи, советы и ответы - часть 12


N = S[0] * S[0] + S[l] * S[l] + ... + S[27] * S[27].

Программа 4_08.bas

DIM S(28)

FOR Al=0 TO 9: FOR A2=0 TO 9: FOR A3=0 TO 9

S(A1+A2+A3)=S(A1+A2+A3)+1 NEXT A3: NEXT A2: NEXT A1

FOR K=0 TO 27: N=N+S(K)*S(K) : NEXT К

PRINT "Количество счастливых билетов = ";N

END

Программа 4_08.с

#include <stdio.h>

#include <conio.h>

main()

{

int s[28],al,a2,a3,k;

long N;

clrscr();

for(k=0; k<28; k++)

s[k]=0;

for(al=0; al<10; al++)

for(a2=0; a2<10; a2++)

for(a3=0; аЗ<10; а3++)

s[al+a2+a3]++;

for(k=0,N=0; k<28; k++)

N += s[k] *s [k] ;

printf("\n Количество счастливых билетов = %ld",N);

getch(); }

Программа 4_08.pas

program lucky_ticket;

var

al,a2,a3,k:integer;

N:longint;

s:array [0..27] of integer;

begin

for al:=0 to 9 do

for a2:=0 to 9 do

for a3:=0 to 9 do

inc(s[al+a2+a3]);

for k:=0 to 27

N:=N+s [k] *s["k] ;

writeln('Количество счастливых билетов = ',N);

readln;

end.

Задание 4.09. Количество разных элементов в целочисленном массиве

Составить подпрограмму подсчета количества разных чисел в массиве, элементами которого являются неотрицательные двухбайтовые значения. Эта задача интересна не своей практической ценностью, а возможностью продемонстрировать несколько разных подходов к ее решению.

Совет 1 (общий)

Первый алгоритм основан на предварительном упорядочении элементов массива по убыванию (или возрастанию) с последующим сравнением соседних элементов. В качестве подпрограммы сортировки может быть использована любая из приводившихся выше процедур. Тестовые примеры подобраны таким образом, что тело процедуры sort может быть пустым, чтобы не загромождать программу.

Совет 2 (общий)

Второй алгоритм состоит из трех шагов. На первом из них выясняется, содержится ли в исходном массиве хотя бы один элемент с нулевым значением. Если таковой не обнаружен, то признак k0 = 0, в противном случае k0 = 1. На втором шаге организуются два вложенных цикла, в которых каждый ненулевой 1-й элемент сравнивается со всеми последующими. Если при этом будет обнаружен двойник, то i-му элементу присваивается нулевое значение. На третьем шаге подсчитывается количество оставшихся ненулевых значений, которое корректируется на величину k0.




Содержание  Назад  Вперед