Форум программистов, компьютерный форум, киберфорум
Наши страницы

Pascal ABC

Войти
Регистрация
Восстановить пароль
 
Rahmanur
1 / 1 / 0
Регистрация: 22.10.2014
Сообщений: 37
#1

Дана матрица: верно ли, что в каждой его строке встречаются все числа от 1 до N по одному разу? - Pascal ABC

26.11.2014, 21:14. Просмотров 347. Ответов 9
Метки нет (Все метки)

Вводится квадратный массив NxN. Верно ли, что в каждой его строке встречаются все числа от 1 до N по одному разу.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2014, 21:14
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Дана матрица: верно ли, что в каждой его строке встречаются все числа от 1 до N по одному разу? (Pascal ABC):

Вывести все слова, которые встречаются в строке по одному разу - Pascal ABC
Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами –...

Дана последовательность слов. Напечатать все слова последовательности, которые встречаются в ней по одному разу. - Pascal
1.8. 2.Составить программу печати в возрастающем порядке всех цифр, входящих в десятичную запись данного числа. 3.8. Дана...

Вывести все слова, которые встречаются В СТРОКЕ по одному разу (без массива) - Pascal ABC
все перерыл, ничего не нашел дали задание Вывести все слова, которые встречаются по одному разу в строке. все это без массива то есть...

Получить все числа, которые встречаются в последовательности по одному разу. - Pascal
Получить все числа, которые встречаются в последовательности по одному разу.

Вывести слова, которые встречаются в строке по одному разу - Pascal ABC
Помогите пожалуйста с решением задачи! Вывести слова, которые встречаются в строке по одному разу. Решение задачи

Вывести слова, которые встречаются в строке по одному разу - Pascal ABC
Вывести слова, которые встречаются в строке по одному разу.

9
Sergio Leone
2461 / 1106 / 403
Регистрация: 07.06.2014
Сообщений: 3,259
26.11.2014, 23:19 #2
тут многое зависит от того, какое максимальное значение может принимать N
(если до 255 - то рекомендую использовать тип "множество" для решения задачи).
0
Rahmanur
1 / 1 / 0
Регистрация: 22.10.2014
Сообщений: 37
27.11.2014, 07:02  [ТС] #3
a vy smojete eto sdelat? prosto segodn9 poslendiy den'.... a 9 ne mogu rewit'
0
Sergio Leone
2461 / 1106 / 403
Регистрация: 07.06.2014
Сообщений: 3,259
27.11.2014, 08:28 #4
да я то смогу. Вопрос - а Вы сами почему не хотите сделать? Вы хоть что-то написать пытались?!
Ну хоть ввод и вывод матрицы сделали?

И ещё - вы не ответили на важный вопрос по существу - какое максимальное значение может принимать N.
Это важно - не любой алгоритм может подойти...
0
Rahmanur
1 / 1 / 0
Регистрация: 22.10.2014
Сообщений: 37
27.11.2014, 08:44  [ТС] #5
Sergio Leone, ne vajno kakoe max znachenie imeet massiv!!!! naprimer vvodits9 5... togda massiv to est matrica budet 5x5....
1 3 4 5 2
3 4 2 1 5
4 2 5 3 1
4 3 2 5 1
5 3 4 2 1
zdes' ot 1 do 5 v kajdom stroke vstrechaets9 tolko 1 raz. znachit verno...

Добавлено через 3 минуты
vse ravno nikto ne budet vvodit bolwie chisla!!! sam pytals9! ne poluchilos'.... u men9 tut dafiga zadach....
0
Sergio Leone
2461 / 1106 / 403
Регистрация: 07.06.2014
Сообщений: 3,259
27.11.2014, 08:59 #6
Цитата Сообщение от Rahmanur Посмотреть сообщение
ne vajno kakoe max znachenie imeet massiv!!!! naprimer vvodits9 5... togda massiv to est matrica budet 5x5....
ок.
значит, с размерностью (максимальной) мы определились.

теперь покажите ваш код, где Вы описываете массив в где вводите (или заполняете) массив числами?
Напишите это - проверку на "Верно ли, что в каждой его строке встречаются все числа от 1 до N по одному разу"
я Вам, так и быть, напишу. В качестве наглядного учебного пособия.
0
Rahmanur
1 / 1 / 0
Регистрация: 22.10.2014
Сообщений: 37
27.11.2014, 10:03  [ТС] #7
Sergio Leone, tolko ne smeites'...
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
const n=7;
var
a: array[1..n,1..n] of integer;
i,j: integer;
begin 
for i:=0 to n do
begin 
for j:=0 to n do
a[i,j]:=1+random(n)
end;
writeln(a[i,j])
end.
tut vivodit owibku: "Program1.pas(9) : Runtime exception: Индекс находился вне границ массива."
0
Sergio Leone
2461 / 1106 / 403
Регистрация: 07.06.2014
Сообщений: 3,259
27.11.2014, 11:00 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
ничего смешного. Все мы когда-то начинали учиться. И порой делали элементарные ошибки.
Для начала - вполне себе код.

Цитата Сообщение от Rahmanur Посмотреть сообщение
ut vivodit owibku: "Program1.pas(9) : Runtime exception: Индекс находился вне границ массива."
угу. смотрите, вы границы массива объявили от 1 до n (a: array[1..n,1..n] of integer
а циклы по строчкам/столбцам от какого значия начинаете?
от нуля:
Pascal
1
2
for i:=0 to n do
    for j:=0 to n do
а нулевого элемента и нет!
Вот и "выход индекса за пределы"

Цитата Сообщение от Rahmanur Посмотреть сообщение
a[i,j]:=1+random(n)
если массив заполнить случайными числами, то можно с высокой долей уверенности (>99%) заявить,
что матрица не сложится так, чтобы все строчки были представлены всем числами от 1 до N
это практически НЕВЕРОЯТНО.
Т.е. программа всегда будет выдавать, что "Нет, не верно, что каждая строка содержит числа от 1 до N ровно один раз."

но, разумеется, на алгоритм это никак не влияет.

Добавлено через 32 минуты
обещал написать код в учебных целях.
Сделал:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
const
  MaxN=20;  {максимально допустимая размерность массива}
  
var
 a : array[1..MaxN,1..MaxN] of byte;
 n : integer;
 i,j,k : integer;
 NumbersInLine : set of byte;
 isGoodArray : boolean;
begin
 randomize;
 repeat
   WriteLn('Введите размерность массива  N от 1 до ',MaxN,' : '); Readln(n);
 until (n>=1) and (n<=MaxN);
 
 for i:=1 to n do
 begin
   for j:=1 to n do begin
      a[i,j]:=1+random(n);
      
      {для отладки первые две строки заполним всегда одинаково}
      if i=1 then a[i,j] := j; {первую строчку массива заполним числами
                                 в обратном порядке:  N.. 4 3 2 1}
      if i=2 then a[i,j] := n-j+1; {вторую строчку массива заполним числами
                                 в обратном порядке:  N.. 4 3 2 1}
      {----- конец фиксированного заполнения для отладки ---------}
                                 
      Write(a[i,j]:2,' ');
   end;
   writeln; {перевод на новую строку}
 end;
 
 {А теперь проверим массив на соотвествие заданию}
 isGoodArray := true; {перед проверкой считаем,что наш массив соотвествует требованиям}
 for i:=1 to n do begin
    NumbersInLine := []; {это для сохранения чисел, которые есть в строке}
    for j:=1 to n do begin
      if a[i,j] in NumbersInLine {если число уже есть в множестве, значит,
                                   такое число уже было в строке ранее,
                                   значит, условие задания НЕ выполняется!
                                   можно прерывать цикл! }
        then begin
          isGoodArray := false;
          Writeln;
          WriteLn('*Отладка: Облом произошёл на строке ',i,
                         ' число ',a[i,j],' встречается более одного раза!' );
          Break
        end
        else {такого числа ещё не было, занесём его в множестов}
          Include(NumbersInLine, a[i,j]);
    end;
    
    if isGoodArray then {если облома ещё не было, то}
       {в цикле проверим, все ли числа от 1 до n есть во множестве
        ВНИМАНИЕ! При заполнении массива случайными числами от 1 до N
           это можно не делать - числа либо повторятся (и облом произойдёт выше),
             либо будут строго по одному разу!}
       for k:=1 to n do
         if not (k in NumbersInLine) then begin
            isGoodArray := false;
            WriteLn('*Отладка 2: Облом произошёл на строке ',i,
               ' в строке нет, как минимум, числа ',k);
            Break;  {остальные числа уже не проверяем, раз одного нет,
                       то условие уже нарушено!}
         end;
 
    if not isGoodArray then Break; {всё, если условие нарушено,остальные строки
       матрицы проверять смысла нет, прерываем цикл i по строка !}
  end;
  
  if isGoodArray
    then WriteLn('Да, верно, что в каждой строке встречаются все числа от 1 до N по одному разу.')
    else WriteLn('Нет, не верно, что в каждой строке встречаются все числа от 1 до N по одному разу.');
end.
1
Rahmanur
1 / 1 / 0
Регистрация: 22.10.2014
Сообщений: 37
27.11.2014, 11:05  [ТС] #9
Sergio Leone, Spasibo!!!
0
Sergio Leone
2461 / 1106 / 403
Регистрация: 07.06.2014
Сообщений: 3,259
27.11.2014, 12:21 #10
Цитата Сообщение от Rahmanur Посмотреть сообщение
Sergio Leone, Spasibo!!!
не за что!

Польза от этого кода будет только в том случае, если Вы его разберете - что там делается и для чего это нужно.
Будут вопросы - обращайтесь, отвечу.
1
27.11.2014, 12:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2014, 12:21
Привет! Вот еще темы с ответами:

Напечатать все слова, которые встречаются в последовательности по одному разу - Pascal ABC
Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 прописных латинских букв; между соседними словами -...

Напечатать все слова , которые встречаются в последовательности по одному разу. - Pascal
Дана последовательность слов. Количество слов не отграничено. Слова разделены запятой, за последним точка. Напечатать все слова , которые...

Напечатать все слова, которые встречаются в нем по одному разу. - Pascal
1. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число – номер вертикали (при...

Дано предложение. Напечатать все слова, которые встречаются в нем по одному разу. - Pascal
Очень нужна помощь в написании программы, что ниже. Заранее ОГРОМНОЕ спасибо! - Задача 2. Дано предложение. Напечатать все слова,...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru