Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Закрытая тема
 
Опции темы Опции просмотра
Старый 13.09.2009, 17:24   #11 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Другой вариант:
Код:
program calc;
uses crt;
 var
a: array[1..10000] of integer;
exz: array[0..9] of integer;
n, i, k, j: integer;

begin {Начало программы}
clrscr;
writeln('Введите количество элементов массива');
readln(n);
writeln('Начинаем заполнение массива ',n,' значениями');
for i:=1 to n do {Цикл заполнения массива}
begin
writeln('Введите значение ',i,'-го элемента');
read(a[i]);
if a[i]<1 then begin writeln('Вы ввели не натуральное число, пожалуйста, повторите.'); i:=i-1; end; 
end;

{начинаем анализ массива}
for i:=1 to n do 
begin
 while a[i] >0 do
begin
j:=a[i] mod 10;
exz[j]:=exz[j]+1;
a[i]:=a[i] div 10; end; end;

{начинаем обрабатывать результирующий массив}
k:=exz[0];
for i:=0 to 9 do 
if exz[i]>k then begin k:=exz[i]; j:=i; end;

writeln('Наиболее часто в массиве встречается цифра ',j);
readln;
end.
Извиняюсь, заметил ошибки. Исправил и проверил, все работает, правда, от первого варианта листинг не очень отличается, лишь в деталях . Отдельное спасибо Long Cat за замечания .

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

З.З.Ы. Тему подчистил от промежуточного обсуждения.
__________________
Убить всех человеков!
AlexZir вне форума  

Старый 13.09.2009, 17:24
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Содержание данных топиков схоже с вашим

Нужна помощь в решении задачи
Прошу помощи Админа
Прошу помощи с принтером
Прошу помощи
Нужна помощь в решении задачи

Старый 13.09.2009, 18:09   #12 (permalink)
Диана-бельчонок
Новичок
 
Регистрация: 13.09.2009
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо большое!!! Есть еще одна маленькая задачка
"Упорядочить числа по убыванию суммы цифр" желательно с методом "Пузырька")
Диана-бельчонок вне форума  
Старый 13.09.2009, 18:17   #13 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

К сожалению, смогу заняться только часов через 20.
Long Cat вне форума  
Старый 13.09.2009, 19:26   #14 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Цитата:
Упорядочить числа по убыванию суммы цифр
Допустим, что дан целочисленный массив.
Код:
program calc;
uses crt;
var
a: array[1..10000] of integer;
exz: array[1..10000] of integer;
n, i, k, j, g: integer;
begin
clrscr;
writeln('Введите количество элементов массива');
readln(n);
writeln('Начинаем заполнение массива ',n,' значениями');
for i:=1 to n do {Цикл заполнения массива}
begin
writeln('Введите значение ',i,'-го элемента');
read(a[i]); end;

for i:=0 to n+1 do exz[i]:=0;

{начинаем анализ массива}
for i:=1 to n do
begin
k:=a[i];
while k > 0 do
begin
j:=k mod 10;
exz[i]:=exz[i]+j;
k:=k div 10;
end; end;

{Выводим оба массива рядом в столбик}
writeln("Число  Сумма цифр');
for i:=1 to n do begin write(a[i]:6, exz[i]:6); writeln; end;
{обрабатываем  массивы}
for g:=1 to n do begin
j:=0; k:=0;
for i:=2 to n do begin
if exz[i]<exz[i-1] then
                   begin
                   k:=exz[i-1];
                   j:=a[i-1];
                   exz[i-1]:=exz[i];
                   a[i-1]:=a[i];
                   exz[i]:=k;
                   a[i]:=j; end; end; end;
{Выводим получившиеся массивы рядом в столбик}
writeln("Число  Сумма цифр');
for i:=1 to n do begin write(a[i]:6, exz[i]:6); writeln; end;

readln(n);
end.
Проверил, все работает
__________________
Убить всех человеков!

Последний раз редактировалось AlexZir; 13.09.2009 в 19:54 Причина: дополнил
AlexZir вне форума  
Старый 29.09.2009, 22:36   #15 (permalink)
citrus
Member
 
Регистрация: 29.09.2009
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Помогите, пожалуйста, написать на паскале след задание:

"Определить сумму квадратов первых трех цифр заданного пятизначного числа. Определить символ, который соответствует числу, образованному и 2-х последних цифр исходного числа."
citrus вне форума  
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 29.09.2009, 23:12   #16 (permalink)
DDS
Member
 
Регистрация: 15.02.2009
Сообщений: 695
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 523
По умолчанию

Цитата:
Сообщение от citrus Посмотреть сообщение
Помогите, пожалуйста, написать на паскале след задание:

"Определить сумму квадратов первых трех цифр заданного пятизначного числа. "
PROGRAM OPREDEL;

USES CRT;
VAR CHISLO,CIFRA1,CIFRA2,CIFRA3,SUMMA:INTEGER;
BEGIN
CLRSCR;
WRITELN('ВВЕЛИТЕ ЧИСЛО');
READ(CHISLO);
CIFRA1:=CHISLO DIV 10000;
CIFRA2:=CHISLO DIV 1000 MOD 10;
CIFRA3:=CHISLO DIV 100 MOD 10;

SUMMA:=SQR(CIFRA1)+SQR(CIFRA2)+SQR(CIFRA3);
WRITELN('1 ЦИФРА=',CIFRA1,' 2 ЦИФРА=',CIFRA2,' 3 ЦИФРА=',CIFRA3,' СУММА ЧИСЕЛ',SUMMA);
END.

Последний раз редактировалось DDS; 29.09.2009 в 23:19
DDS вне форума  
Старый 30.09.2009, 16:06   #17 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от citrus Посмотреть сообщение
Помогите, пожалуйста, написать на паскале след задание:

"Определить сумму квадратов первых трех цифр заданного пятизначного числа. Определить символ, который соответствует числу, образованному и 2-х последних цифр исходного числа."
В дополнение к предложенной программе, дабы и вторую часть задания выполнить:

PROGRAM OPREDEL;

USES CRT;
VAR CHISLO,CIFRA1,CIFRA2,CIFRA3,SUMMA:INTEGER;
Ch:Char;
BEGIN
CLRSCR;
WRITELN('ВВЕДИТЕ ЧИСЛО');
READLN(CHISLO);
CIFRA1:=CHISLO DIV 10000;
CIFRA2:=CHISLO DIV 1000 MOD 10;
CIFRA3:=CHISLO DIV 100 MOD 10;
Ch:=CHR(CHISLO mod 100);
SUMMA:=SQR(CIFRA1)+SQR(CIFRA2)+SQR(CIFRA3);
WRITELN('1 ЦИФРА=',CIFRA1,' 2 ЦИФРА=',CIFRA2,' 3 ЦИФРА=',CIFRA3,' СУММА ЧИСЕЛ',SUMMA,' СИМВОЛ=',Ch);
READLN;
END.

Замена в 7 строке READ на READLN и добавление READLN в конце программы нужно, чтобы после вывода на экран программа остановилась, дав возможность увидеть результат. И еще совет - НЕ использовать кириллицу: при запуске в DOS-Паскале символы отображаются неверно. Поэтому желательно все эти 'ВВЕДИТЕ ЧИСЛО', 'ЦИФРА' и т.п. заменить латиницей.
Vladimir_S вне форума  
Старый 30.09.2009, 16:14   #18 (permalink)
ummasha
Member
 
Аватар для ummasha
 
Регистрация: 24.12.2008
Сообщений: 419
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1311
По умолчанию

Программа может вывести в качестве символа черточку или квадратик? Это спрашивается в задаче?

Последний раз редактировалось ummasha; 30.09.2009 в 16:22
ummasha вне форума  
Старый 30.09.2009, 16:24   #19 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Если речь идет о консольном приложении, то да, может. Псевдографика — Википедия
Там коды этих символов. На Паскале это делается так:
Код:
write(chr($DB));
Будет квадратик
Long Cat вне форума  
Старый 30.09.2009, 16:35   #20 (permalink)
ummasha
Member
 
Аватар для ummasha
 
Регистрация: 24.12.2008
Сообщений: 419
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1311
По умолчанию

В моем паскале write(chr($DB)); выводит букву Ы. Но у меня не DOS-Паскаль, а Паскаль АВС, так что все нормально.
ummasha вне форума  
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Закрытая тема

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 14:16.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.