Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 07.10.2010
Сообщений: 12
1

Циклы в двумерных массивах

15.10.2010, 15:28. Показов 917. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Люди, помогите. плиз, не понимаю, в чем дело. Есть входной файл с массивом символов 20х15 (анализировать нужно только 7:20Х15)
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
kotov       inzhener
sanin       prodavez
lukin         kassir
somov        voditel
vanin         tehnik
lenin         tehnik
nosov         kassir
romin        manager
zanin       prodavez
mosin        voditel
durov       inzhener
repin         tehnik
panin       inzhener
panov        voditel
kolin         kassir
Нужно посчитать количество строк, где в профессиях не встречается 'r'.

Сделала код:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
program p11;
type
t=array[1..20] of char;
tt=array[1..15] of t;
var
A:tt;B:t;
i,j,k,S:integer;
Begin
     assign(input,'spisok.inp');
     reset(input);
    For i:=1 to 15 do
     Begin
          For j:=1 to 20 do
          Begin
          read (A[i,j]);
          End;
     readln;
     End;
 
writeln ('*****************');
i:=1;
j:=7;
S:=0;
For i:=1 to 15 do
Begin
    For j:=7 to 20 do
    Begin
       If A[i,j]='r' Then i:=i+1 Else j:=j+1;
       End;
    S:=S+1;
End;
    write ('strok bez r ',S);
    writeln;
End.
Но врезультате, я получаю 15, т.е. он тупо считает все строки. В чем моя ошибка?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2010, 15:28
Ответы с готовыми решениями:

ВЫчисление в двумерных массивах
найти минимальный элемент в каждой строке и записать данные в новый массив Без использование sring...

Подпрограммы в двумерных массивах
Напишите, пожалуйста, процедуру, которая заменяет все числа главной диагонали числами побочной...

В двумерных массивах A[N* N] и В[M *M] определить сумму чисел в каждой строке
Помогите решить задачу. В двумерных массивах A и В определить сумму чисел в каждой строке и строку...

В двумерных массивах A[N*M] и В[L*M] проанализировать последний элемент каждой строки...
В двумерных массивах A и В проанализировать последний элемент каждой строки. Если он больше числа...

10
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
15.10.2010, 15:30 2
Цитата Сообщение от Verano naranjo Посмотреть сообщение
я получаю 15, т.е. он тупо считает все строки.
Цитата Сообщение от Verano naranjo Посмотреть сообщение
For i:=1 to 15 do
Begin
А сколько вы хотите получить?
0
0 / 0 / 0
Регистрация: 07.10.2010
Сообщений: 12
15.10.2010, 15:33  [ТС] 3
О_о Хотелось бы 6. (в исходнике приложенном строки сдвинулись на 1 вниз, не обращайте внимание. На самом деле их 15)
0
Неадекват и грубиян
310 / 297 / 301
Регистрация: 22.02.2010
Сообщений: 647
15.10.2010, 15:35 4
Pascal
1
2
3
4
For j:=7 to 20 do
    Begin
       If A[i,j]='r' Then i:=i+1 Else j:=j+1;
       End;
вообще неясный момент
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
15.10.2010, 15:37 5
Цитата Сообщение от Verano naranjo Посмотреть сообщение
Хотелось бы 6
Pascal
1
2
for i:=1 to 6 do
 begin
или
Pascal
1
2
for i:=10 to 15 do
 begin
и будет 6 строк.

Добавлено через 1 минуту
Цитата Сообщение от Verano naranjo Посмотреть сообщение
(анализировать нужно только 7:20Х15)
А это вообще для гадалок написано...
0
0 / 0 / 0
Регистрация: 07.10.2010
Сообщений: 12
15.10.2010, 15:38  [ТС] 6
имела ввиду, если во время перебора строки появляется символ =r, то мы переходим на новую строку. Если нет, переходим к след. символу.

Я неверно прописала это?
Подскажите, плиз, как правильно, мне так надо
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
15.10.2010, 15:39 7
Но врезультате, я получаю 15, т.е. он тупо считает все строки.
Так все строки и нужно проверять, это символы в строке нужно не все, а только профессию..
0
0 / 0 / 0
Регистрация: 07.10.2010
Сообщений: 12
15.10.2010, 15:41  [ТС] 8
Цитата Сообщение от Puporev Посмотреть сообщение
Pascal
1
2
for i:=1 to 6 do
 begin
или
Pascal
1
2
for i:=10 to 15 do
 begin
и будет 6 строк.

Добавлено через 1 минуту

А это вообще для гадалок написано...
Puporev, пардон, переставила местами строки и столбцы: нужно анализировать все строки (15), но символы с 7 до 20 позиции в каждой строке (т.е. диапазон, в котором профессии).

Мне же не просто строки посчитать нужно, а строки, в которых в профессии отсутствует символ r
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
15.10.2010, 15:43 9
Если нужны строки в которых нет символа r в профессии, то можно так.
Pascal
1
2
3
4
5
6
7
8
9
S:=15;
For i:=1 to 15 do
  Begin
    For j:=7 to 20 do
    If A[i,j]='r' Then s:=s-1;
  End;
    write ('strok bez r ',S);
    writeln;
End.
1
0 / 0 / 0
Регистрация: 07.10.2010
Сообщений: 12
15.10.2010, 15:47  [ТС] 10
Цитата Сообщение от Puporev Посмотреть сообщение
Так все строки и нужно проверять, это символы в строке нужно не все, а только профессию..
Да, но почему-то паскаль не выполняет, получается условие. что если, например на 16 символе в строке он натыкается на символ r, он переходит к след. строке и начинает её анализировать с 7 символа. В сумматоре при этом остается прежнее число
Вместо этого он прибавляет единицу все равно в сумматор

Добавлено через 2 минуты
Цитата Сообщение от Puporev Посмотреть сообщение
Если нужны строки в которых нет символа r в профессии, то можно так.
Pascal
1
2
3
4
5
6
7
8
9
S:=15;
For i:=1 to 15 do
  Begin
    For j:=7 to 20 do
    If A[i,j]='r' Then s:=s-1;
  End;
    write ('strok bez r ',S);
    writeln;
End.
Puporev, благодарю, но как все же мне сделать так. чтобы посмотреть, что он пропускает строку. не записывая ничего в сумматор, т.к. на основе этой задачи мне надо сделать другую, а там по-любому без этого перескакивания через строку не обойтись (((
Может в моем коде какой-то косяк можно поправить?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
15.10.2010, 15:51 11
Pascal
1
2
3
4
5
6
7
8
9
10
S:=15;P:=0;
For i:=1 to 15 do
  Begin
    For j:=7 to 20 do
    If A[i,j]='r' Then s:=s-1 else P:=P+1;
  End;
    writeln ('strok bez r ',S);
    writeln('propuscheno strok=',P);
    writeln;
End.
Добавлено через 50 секунд
Нет, чуть не так, сейчас поправлю.

Добавлено через 58 секунд
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
S:=15;P:=0;
For i:=1 to 15 do
  Begin
    k:=0; 
    For j:=7 to 20 do
    If A[i,j]='r' Then k:=1;
    if k=0 then s:=s-1 else P:=P+1;
  End;
    writeln ('strok bez r ',S);
    writeln('propuscheno strok=',P);
    writeln;
End.
0
15.10.2010, 15:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.10.2010, 15:51
Помогаю со студенческими работами здесь

В двумерных массивах A[N*N] и В[M*M] проанализировать последний элемент каждой строки.
Тема - процедуры В двумерных массивах A и В проанализировать последний элемент...

В двумерных массивах все положительные элементы заменить на заданные числа
Даны два двумерных массива размерности соответственно n×m. В первом массива все положительные...

В двумерных массивах A[NxN] и В[MxM] рассортировать числа по возрастанию в каждой диагонали, параллельной главной диагонали
Вот сама задача 20. В двумерных массивах A и В рассортировать числа по возрастанию в каждой...

В массивах G(8), K(19) определить кол-во и произведение элементов меньших 26 в двух заданных массивах (6;34)
Задать два одномерных массива значений, чтобы величины элементов массивов попадали в заданный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru