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

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

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

 
 Ответить  Открыть новую тему 
> Помогите доделать задачу про массивы
сообщение
Сообщение #1


Гость






Задача такая: даны два символьных массива. В массиве, который содержит наибольшее число цифр, заменить все буквы символом '*', а в другом массиве все буквы - символом '+'.
Я подумал и написал вот такую программу:

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 -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
я никак не могу понять почему
Изменяется, только ты этого не видишь:
procedure Pr(VAR a,b:xt); { <--- VAR не забыл? }
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

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

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


Поставь Var перед параметрами в процедуре.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата(volvo @ 13.12.2006 14:03) *

Изменяется, только ты этого не видишь:
procedure Pr(VAR a,b:xt); { <--- VAR не забыл? }


Спасибо большое за совет, действительно помогло. Опыта маловато, поэтому такие глупые ошибки встречаются. Буду набираться. Ещё раз спасибо.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Ребят, помогите, пожалуйста, с ещё двумя задачами:
1) Дан одномерный символьный массив. Сформировать новый массив, состоящий только из разных элементов исходного. (Пример: 1 массив - ассип, 2 массив - асип).
2) Дан двумерный массив. Определить, есть ли в ней равные строки.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

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

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


Цитата(по теме @ 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.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Caranthir
В разделе по Паскалю постим Дельфийские программы? Опять Oops?

Устное предупреждение!
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

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

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


В первом наверное легче сформировать массив (от а..до я или какие там могут встречатся) ф-цией fillChar и заполнить 0 , и если встречается элемент, то писать 1 в соответствующую позиуцию сформированого массива.
затем также вывести новый масив сравнивая с 0 все элементы
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Цитата(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.


А на Паскале никак нельзя? Я не очень хорошо в Делфи разбираюсь.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Цитата(Caranthir @ 17.12.2006 11:07) *

В первом наверное легче сформировать массив (от а..до я или какие там могут встречатся) ф-цией fillChar и заполнить 0 , и если встречается элемент, то писать 1 в соответствующую позиуцию сформированого массива.
затем также вывести новый масив сравнивая с 0 все элементы

Что-то я не понял: что за функция иакая fillchar и как всё это вообще работает. Если можно, выложите, пожалуйста, пример.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Ребята, ну помогите, пожалуйста!. Задачки, наверное, раз плюнуть, но в голову ничего не лезет. Мне если не код, то идею как это реализзовать подкиньте. Премного благодарен. give_rose.gif
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 19.03.2024 10:00
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name