{Select array} procedure Select_array; var a:byte; begin writeln('Enter number of desired array from 1 to 3'); readln(a); if (a>=1)and(a<=3) then indicator:=a else writeln('Not available number'); end;
{Input array} procedure Input_array; var i,n,k:byte; s:string; begin Writeln('Input array in string across comma'); readln(s); k:=1; for i:=1 to length(s) do if (s[i]<>'') and (s[i]<>',') and (s[i] not in [a..z]) then matrix[indicator].str[k]:=matrix[indicator].str[k]+s[i] else inc(k); getmem(matrix[indicator].mas,k*2); for i:=1 to k do val(matrix[indicator].str[i],matrix[indicator].mas); matrix[index].qty:=k; end; ....
Но вот в последней процедуре возникли вопросы: правильно ли я запихнул строку, содержащую целочисленные элементы, введеные через запятую, в вектор? Как отправить юзера на повторный ввод, если code=1? Заранее огромное спасибо.
Автор: volvo 5.04.2006 19:37
-Денис- Давай ты приведешь полное задание? А то совершенно непонятно, зачем ты определяешь все эти структуры (например, tmatrix), и как ты хотел это использовать...
Твой фрагмент кода просто не компилируется...
Автор: -Денис- 5.04.2006 20:19
Цитата(volvo @ 5.04.2006 15:37)
-Денис- Давай ты приведешь полное задание? А то совершенно непонятно, зачем ты определяешь все эти структуры (например, tmatrix), и как ты хотел это использовать...
Твой фрагмент кода просто не компилируется...
Короче, фишка такая: я пишу прогу, но никак не могу придумать структуру, при которой я мог бы вводить вектор в виде строки целочисленных элементов через запятую, а после загонять это в вектор типа интежер, и в случае неправильно ввода возвращать пользователя на введение строки заного.
Автор: volvo 5.04.2006 21:25
Цитата(-Денис- @ 5.04.2006 16:19)
никак не могу придумать структуру, при которой я мог бы вводить вектор в виде строки целочисленных элементов через запятую, а после загонять это в вектор типа интежер, и в случае неправильно ввода возвращать пользователя на введение строки заного.
Ты про это:
type { Это для простоты... Можешь сделать динамический массив } arrType = array[1 .. 20] of integer;
function get_vector(s: string; var arr: arrType): integer; var st: string; p, len, curr, X, err: integer;
begin get_vector := -1;
if (s = '') or (s[1] = ',') or (s[length(s)] = ',') then exit else for p := 1 to length(s) do if not (s[p] in ['0' .. '9', '-', ',']) then exit;
curr := 0; repeat
p := pos(',', s); if p = 0 then len := length(s) else len := p - 1;
st := copy(s, 1, len); inc(curr); val(st, X, err); if err <> 0 then exit; arr[curr] := X;
delete(s, 1, succ(len));
until length(s) = 0; get_vector := curr
end;
var s: string; arr: arrType; i, len: integer;
begin repeat writeln('enter string: '); readln(s); len := get_vector(s, arr); until len > 0;
for i := 1 to len do write(arr[i]:5); writeln; end.