Форум «Всё о Паскале» _ Задачи _ Помогите доделать задачу про массивы
Автор: -Павел- 13.12.2006 17:58
Задача такая: даны два символьных массива. В массиве, который содержит наибольшее число цифр, заменить все буквы символом '*', а в другом массиве все буквы - символом '+'. Я подумал и написал вот такую программу:
Program lab_4; type xt=array [1..5] of char; var x,y:xt; j:integer; procedure Pr(a,b:xt); var i,k,n:integer; begin k:=0;n:=0; for i:=1 to 5 do if a[i] in ['0'..'9'] then k:=k+1; for i:=1 to 5 do if b[i] in ['0'..'9'] then n:=n+1; if k>n then for i:=1 to 5 do begin if a[i] in ['a'..'z'] then a[i]:='*'; if b[i] in ['a'..'z'] then b[i]:='+'; end; else for i:=1 to 5 do begin if b[i] in ['a'..'z'] then b[i]:='*'; if a[i] in ['a'..'z'] then a[i]:='+'; end; end; BEGIN writeln('vvedite massiv 1:'); for j:=1 to 5 do readln(x[j]); writeln('vvedite massiv 2:'); for j:=1 to 5 do readln(y[j]); Pr(x,y); for j:=1 to 5 do write(x[j]); writeln; for j:=1 to 5 do write(y[j]); readln; END.
Проблема в том, что буквы в массивах не меняются на соответствующие символы (хотя массив с наибольшим количеством цифр определяется), и я никак не могу понять почему. Может быть, кто мне поможет. Заранее спасибо. P.S. В программе обязательное использование процедуры.
Автор: volvo 13.12.2006 18:03
Цитата
я никак не могу понять почему
Изменяется, только ты этого не видишь:
procedure Pr(VAR a,b:xt); { <--- VAR не забыл? }
Автор: Malice 13.12.2006 18:03
Поставь Var перед параметрами в процедуре.
Автор: -Павел- 13.12.2006 18:25
Цитата(volvo @ 13.12.2006 14:03)
Изменяется, только ты этого не видишь:
procedure Pr(VAR a,b:xt); { <--- VAR не забыл? }
Спасибо большое за совет, действительно помогло. Опыта маловато, поэтому такие глупые ошибки встречаются. Буду набираться. Ещё раз спасибо.
Автор: по теме 17.12.2006 12:49
Ребят, помогите, пожалуйста, с ещё двумя задачами: 1) Дан одномерный символьный массив. Сформировать новый массив, состоящий только из разных элементов исходного. (Пример: 1 массив - ассип, 2 массив - асип). 2) Дан двумерный массив. Определить, есть ли в ней равные строки.
Автор: Caranthir 17.12.2006 14:39
Цитата(по теме @ 17.12.2006 8:49)
2) Дан двумерный массив. Определить, есть ли в ней равные строки.
Типо того:
Код
uses SysUtils; var a:Array of array of Integer; i,j,n,x,y,c:Integer; begin readln (n); SetLength(a,n,n); randomize; for i:=0 to n-1 do begin for j:=0 to n-1 do begin //a[i,j]:=random (2)-1; readln(a[i,j]); //write (a[i,j]:5); end; //writeln; end; y:=0; for x:=0 to n-2 do for i:=1 to n-1 do for j:=0 to n-1 do if (a[i,j]=a[x,y])and(i<>x) then begin inc(y); inc(c); end else begin y:=0; break; end; if c=n then writeln('yes') else writeln ('NO'); readln; end.
Автор: volvo 17.12.2006 14:53
Caranthir В разделе по Паскалю постим Дельфийские программы? Опять Oops?
Устное предупреждение!
Автор: Caranthir 17.12.2006 15:07
В первом наверное легче сформировать массив (от а..до я или какие там могут встречатся) ф-цией fillChar и заполнить 0 , и если встречается элемент, то писать 1 в соответствующую позиуцию сформированого массива. затем также вывести новый масив сравнивая с 0 все элементы
Автор: -Павел- 17.12.2006 18:42
Цитата(Caranthir @ 17.12.2006 10:39)
Типо того:
Код
uses SysUtils; var a:Array of array of Integer; i,j,n,x,y,c:Integer; begin readln (n); SetLength(a,n,n); randomize; for i:=0 to n-1 do begin for j:=0 to n-1 do begin //a[i,j]:=random (2)-1; readln(a[i,j]); //write (a[i,j]:5); end; //writeln; end; y:=0; for x:=0 to n-2 do for i:=1 to n-1 do for j:=0 to n-1 do if (a[i,j]=a[x,y])and(i<>x) then begin inc(y); inc(c); end else begin y:=0; break; end; if c=n then writeln('yes') else writeln ('NO'); readln; end.
А на Паскале никак нельзя? Я не очень хорошо в Делфи разбираюсь.
Автор: -Павел- 17.12.2006 18:43
Цитата(Caranthir @ 17.12.2006 11:07)
В первом наверное легче сформировать массив (от а..до я или какие там могут встречатся) ф-цией fillChar и заполнить 0 , и если встречается элемент, то писать 1 в соответствующую позиуцию сформированого массива. затем также вывести новый масив сравнивая с 0 все элементы
Что-то я не понял: что за функция иакая fillchar и как всё это вообще работает. Если можно, выложите, пожалуйста, пример.
Автор: -Павел- 18.12.2006 2:48
Ребята, ну помогите, пожалуйста!. Задачки, наверное, раз плюнуть, но в голову ничего не лезет. Мне если не код, то идею как это реализзовать подкиньте. Премного благодарен.