IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Массив и матрица
@WARlock@
сообщение 21.01.2006 11:40
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской

Репутация: -  0  +


Народ поможите решить задачки.

Задача 1) Реализовать алгоритм решения задачи на преобразование десятичного числа n в число m. Вводимое пользователем число n должно быть integer или logint. Программа должна работать правильно для чисел, содержащих не менее 8 цифр. В случае невозможности формирования числа m на основе числа n выводить соответствующее сообщение.
- Число m состоит из нечетных цифр числа n, стоящих на позициях, номера которых четны, считая с начала.


Задача 2) Составить программу решения (задачи 1(смотреть выше)), в которой n и m имеют строковый тип данных (string).


Задача 3) По условию (задачи 1(смотреть выше)) составить программу вывода на экран по данному числу n типа string матрицу SxS, (S – кол-во цифр в числе m), состоит из нулей и цифр числа m которые расположены:
- В последней строке справа на лево.

Сообщение отредактировано: @WARlock@ - 24.01.2006 14:17
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 21.01.2006 11:59
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Еще бы узнать где в твоем понимании начало у цифры ...
1)
uses crt;
var
a,b : LongInt;
count : byte;
flag : boolean;

begin
clrscr;
write('a='); readln(a);
count := 0;
b := 0;
flag := false;
while(a <> 0) do begin
if flag and (odd(a mod 10)) then begin
b := b + round(exp(count*ln(10))) * (a mod 10);
inc(count);
end;
a := a div 10;
flag := not(flag);
end;
writeln(b);
readln;
end.


12345678 -> 1357

Сообщение отредактировано: volvo - 5.11.2006 20:52


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 21.01.2006 12:02
Сообщение #3


Гость






klem4, по заданию:
Цитата
Число m состоит из нечетных цифр числа n, стоящих на позициях, номера которых четны, считая с начала.

Должно быть так: 123451789 -> 1,
ибо 2, 4 и 8 - четные цифры... blum.gif

Исправил ;)

Сообщение отредактировано: klem4 - 21.01.2006 12:06
 К началу страницы 
+ Ответить 
volvo
сообщение 21.01.2006 12:14
Сообщение #4


Гость






klem4, ну, и что ты исправил?

Цитата
Число m состоит из нечетных цифр числа n, стоящих на позициях, номера которых четны, считая с начала.
Какой номер позиции у цифры '1'? blink.gif
 К началу страницы 
+ Ответить 
klem4
сообщение 21.01.2006 12:35
Сообщение #5


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Я же говорю, с мотря как воспринимать "начало числа"

Для меня номер цифры 1 = 8, вполне четный номер ... А так как автор не привел тестов то ..

Сообщение отредактировано: klem4 - 21.01.2006 12:36


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 21.01.2006 12:36
Сообщение #6


Гость






Я бы вот так делал:
var
a, n: longint;
count: byte;

begin
n := 2134754;

a := n; count := 0;
while a > 0 do begin
inc(count); a := a div 10;
end;

while n > 0 do begin
if (not odd(count)) and odd(n mod 10) then
a := 10 * a + (n mod 10);
n := n div 10; dec(count);
end;

while a > 0 do begin
write(a mod 10);
a := a div 10;
end;
writeln;
end.

2134754 -> 15

P.S. Вообще-то числа ДАЖЕ У НАС пишутся слева направо... Так что 1 в твоем примере - первая...
 К началу страницы 
+ Ответить 
@WARlock@
сообщение 21.01.2006 14:51
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской

Репутация: -  0  +


Ну я эту задачу делал таким образом, четные номера найти могу, а вот дальше не получается :

program lab; uses crt;
var n,m,b:string;
i,k,x:integer;
begin clrscr;
writeln('Введите n:');readln(n);
m:='';
for i:=1 to length(n) do begin
if not odd(i) then begin
val(n[i],x,k);
str(x,b);
m:=concat(m,b);
end;end;
writeln;
writeln;
writeln('n=',n,' m=',m);
readln;
end.


Сообщение отредактировано: volvo - 5.11.2006 20:53
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 21.01.2006 14:58
Сообщение #8


Гость






@WARlock@, это другая задача... Под №2... В первой тебе нельзя пользоваться типом String, нужно справиться только с целочисленными типами...
 К началу страницы 
+ Ответить 
@WARlock@
сообщение 22.01.2006 11:03
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской

Репутация: -  0  +


Ладно спасибо с (задачей 1) помогли разобраться, остались еще две задачи.

Сообщение отредактировано: @WARlock@ - 24.01.2006 11:16
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
@WARlock@
сообщение 24.01.2006 14:03
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской

Репутация: -  0  +


Усе в поряде наконец-то я въехал как (задачу 3) решать.

Вот код проги:

program lab3; uses crt;
var a:array[1..100] of real;
i,j,n:integer;
b:real;
s:string;
begin clrscr;
while n<8 do begin clrscr;
write('Vvedite s:');readln(s);
val(s,n,i);end;
for i:=1 to n do begin
write('a[',i,']=');
readln(a[i]);
end;
writeln;
for i:=1 to n do begin
for j:=1 to n do begin
write(' 0'); end; writeln; end;
write(' ');
for i:=1 to n div 2 do
begin
b:=a[n+1-i];
a[n+1-i]:=a[i];
a[i]:=b;
end;
for i:=1 to n do
write(a[i]:1 :0,' ');
readln;
end.


Сообщение отредактировано: volvo - 5.11.2006 20:54
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 24.01.2006 14:06
Сообщение #11


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Число-палиндром
http://forum.pascalnet.ru/index.php?showt...660&#entry30660
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
@WARlock@
сообщение 25.01.2006 11:47
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской

Репутация: -  0  +


Люди где вы? Не спите выручайте. Кто знает как делать (задачу 2(смотреть в самом начале)) с типом string, пожалуйста напишите код проги. Осталось 3 дня до зачета.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 25.01.2006 12:40
Сообщение #13


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Вот решение 3-й задача, в ней же присутствует решение второй. (вариант если матрицу хранить надо ...)

{$R-}
uses crt;
type
TElem = char;
PArr = ^TArr;
TArr = array [1..1] of TElem;
PMX = ^TMx;
TMx = array [1..1] of PArr;
var
n,m : string;
s : PMx;
i,j,size : byte;
begin
clrscr;
write('n = '); readln(n);
i := 2;
m := '';
while (i <= length(n)) do begin
if n[i] in ['1','3','5','7','9'] then m := m + n[i];
inc(i,2);
end;
size := length(m);
if size <> 0 then begin
writeln('m = ',m);
GetMem(s, size * sizeof(PArr));
for i := 1 to size do GetMem(s^[i], size * sizeof(TElem));
for i := 1 to size do begin
writeln;
for j := 1 to size do begin
if i = size then s^[i]^[j] := m[j]
else s^[i]^[j] := '0';
write(s^[i]^[j],' ');
end;
end;

for i := 1 to size do FreeMem(s^[i], size * sizeof(TElem));
FreeMem(s, size * sizeof(PArr));
end;

readln
end.


Сообщение отредактировано: volvo - 5.11.2006 20:54


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 25.01.2006 13:53
Сообщение #14


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Или еще вот такой вариант,

uses crt;
var
n,m : string;
i,size : byte;

begin

clrscr;

write('n = '); readln(n);

i := 2;

m := '';

while (i <= length(n)) do begin
if n[i] in ['1','3','5','7','9'] then m := m + n[i];
inc(i,2);
end;

size := length(m);

if size <> 0 then begin
writeln('m = ',m);
writeln;
for i := 1 to size * size do begin
if i in [size * size - size + 1 .. size * size] then write(m[(size * size - i + 1)],' ')
else write('0 ');
if i mod size = 0 then writeln;
end;
end;

readln;
end.


ps В первой проге немного перепутал, в матрице цифры идут не справа на лево а наоборот. В это проге правильно.

Сообщение отредактировано: volvo - 5.11.2006 20:55


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
@WARlock@
сообщение 26.01.2006 13:33
Сообщение #15


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской

Репутация: -  0  +


Выше написан код (задачи 1) решенной с помощью longint, а как ее решить с помощью integer.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 26.01.2006 13:38
Сообщение #16


Гость






Заменить LongInt на Integer не пробовал? blink.gif
 К началу страницы 
+ Ответить 
@WARlock@
сообщение 27.01.2006 13:29
Сообщение #17


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской

Репутация: -  0  +


И еще каким образом можно решить (задачу 2(Смотреть в начале)), через if not odd(i) then begin.
odd и not odd отвечают за четность и нечетность.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 27.01.2006 13:52
Сообщение #18


Гость






А ты пост №6 ВООБЩЕ смотрел? Как можно СМОТРЕТЬ и не ВИДЕТЬ??? Там же есть использование Odd !!!
 К началу страницы 
+ Ответить 
@WARlock@
сообщение 28.01.2006 4:25
Сообщение #19


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской

Репутация: -  0  +


Вот я и говорю, что мне нужно решение (задачи 2) с помощью odd, а не (задачи 1) т.к она уже разобрана.

Сообщение отредактировано: @WARlock@ - 28.01.2006 4:26
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.06.2025 11:20
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"