Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задан вектор

Автор: asu2006 21.11.2007 18:11

Задан вектор T(n) n>= 15. Сформировать вектор D из тех элементов массива Т, в десятичной записи которых не встречается заданная цифра С

Автор: мисс_граффити 22.11.2007 3:38

Чудная тема.
Чувство, что нас воспринимают как роботов-решателей задач для лентяяев. Кинул условие - получил решение с пояснениями.

Автор: Sozialist 22.11.2007 8:36

мисс_граффити
Хорошее чувство rolleyes.gif
asu2006
Ты так не думаешь?

Автор: Ozzя 23.11.2007 17:12

Хорошая задачка. Вроде, не встречалась, ранее. Занес в задачник.

Автор: asu2006 2.12.2007 21:12

Люди помогите хотя бы алгоритмом give_rose.gif

Автор: klem4 2.12.2007 21:15

для начала напиши функцию, которая будет определять, есть ли в числе определенная цифра. Если очень лень думать, и очень хорошо поискать по форуму, ты найдешь как разбить число на цифры с и без использованием строк. Подобные задачи решались десятки раз.

Автор: asu2006 3.12.2007 18:57

const n=15;
type
vector=array[1..n] of byte;
var
T, B: vector;
I,k: integer;
begin

for i:=1 to n do

begin
if (i>0) and (i<=11) then

k:=48;
k:=k+i;
write('T[', i,'] ');

writeln('B[', chr(k),']');
if (i>12) and (i<=15) then
k:=67;
k:=k+i;
write('T[', i,'] ');
writeln('B[', chr(k),']');
end;
readln;
end.


Это во так да?

Автор: klem4 3.12.2007 23:04

эм ... что-то такое:

uses crt;

const
MAX_N = 15;

type
TArray = array [1..MAX_N] of Integer;

procedure Input(var arr: TArray; const n: Integer);
var
i: Integer;
begin
for i := 1 to n do begin
write('arr[', i, '] = '); readln(arr[i]);
end;
end;

procedure Print(const arr: TArray; const n: Integer);
var
i: Integer;
begin
if n = 0 then
writeln('empty ...');
writeln;
for i := 1 to n do write(arr[i]:4);
end;

function IncludeValue(const source, value: Integer): Boolean;
var
_source: Integer;
begin
if source = 0 then IncludeValue := value = 0 else begin
_source := source;

while (_source > 0) and ((_source mod 10) <> value) do
_source := _source div 10;

IncludeValue := _source > 0;
end;
end;

procedure CreateNewArray(const arr: TArray; var new_arr: TArray;
const n: Integer; var m: Integer; const value: Integer);
var
i: Integer;
begin
m := 0;
for i := 1 to n do
if not IncludeValue(arr[i], value) then begin
inc(m);
new_arr[m] := arr[i];
end;
end;


var
t, d: TArray;
n, m, c: Integer;

begin
clrscr;

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

Input(t, n);

CreateNewArray(t, d, n, m, c);

Print(d, m);

readln;
end.

Автор: volvo 3.12.2007 23:52

Как вариант:

const
n_max = 15;

var
arr, res: array[1 .. n_max] of integer;
my_set: set of byte;
n, T, i, size: integer;
C: byte;

begin
write('n = '); readln(n);
for i := 1 to n do begin
write('arr[', i:2, '] = ');
readln(arr[i]);
end;

write('C = '); readln©;

size := 0;
for i := 1 to n do begin
T := arr[i]; my_set := [];
while T > 0 do begin
include(my_set, T mod 10);
T := T div 10;
end;
if not (C in my_set) then begin { <--- Исправлено }
inc(size); res[size] := arr[i];
end;
end;

for i := 1 to size do
write(res[i]:4);
writeln;
end.


Автор: klem4 4.12.2007 0:11

Ну раз пошла такая пьянка, вариант со строкой.

const
n_max = 15;

var
arr, res: array[1 .. n_max] of integer;
tmp: String;
n, i, size: integer;
C: byte;

begin
write('n = '); readln(n);
for i := 1 to n do begin
write('arr[', i:2, '] = ');
readln(arr[i]);
end;

write('C = '); readln©;

size := 0;
for i := 1 to n do begin
Str(arr[i], tmp);
if Pos(Chr(48 + C), tmp) = 0 then begin
inc(size); res[size] := arr[i];
end;
end;

for i := 1 to size do
write(res[i]:4);
writeln;
end.

Автор: asu2006 5.12.2007 20:03

Цитата(asu2006 @ 21.11.2007 14:11) *

Задан вектор T(n) n>= 15. Сформировать вектор D из тех элементов массива Т, в десятичной записи которых не встречается заданная цифра С

Задан вектор T(n) <=15. Сформировать вектор В из тех элементов массива Т, в десятичной записи которых не встречается заданная цифра С

Автор: volvo 5.12.2007 20:10

dry.gif А предыдущие посты прочесть - "не царское это дело"? Или поменять название переменной с Arr на T и Res на B - это задача непосильно сложная? А, я понял... Завтра ты опять придешь и перепечатаешь то же самое еще раз, только вместо буквы "B" будет "A", так? 26 букв в латинском алфавите... Тема станет "горячей"...

Автор: klem4 5.12.2007 23:24

ппц ... закрыто.