0 / 0 / 0
Регистрация: 12.03.2013
Сообщений: 35
1

Определить номер первого элемента матрицы, который не является степенью числа 2

04.06.2016, 11:38. Показов 1558. Ответов 5
Метки нет (Все метки)

Дан двумерный массив целых чисел. Написать программу, которая для каждого столбца массива определяет номер первого элемента, который не является степенью числа 2 (например, 16 – это 2 в 4-й степени, а 192=2*2*2*2*2*2*3 не является таким числом)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2016, 11:38
Ответы с готовыми решениями:

Найти последний элемент каждой строки матрицы, который не является степенью заданного числа
Написать программу, которая 7. для каждой строки массива определяет последний элемент, который не...

Для каждой строки массива определить последний элемент, который не является степенью числа 3
• для каждой строки массива определить последний элемент, который не является степенью числа 3 ...

Для каждой строке массива определить последний элемент, который не является степенью числа 3
для каждой строке массива определить последний элемент, который не является степенью числа 3...

Одномерный массив. Найти номер первого отрицательного элемента, который по модулю меньше максимального числа
Здравствуйте. Очень надеюсь на вашу помощь. Есть задание:Найти номер первого отрицательного...

5
25 / 1 / 1
Регистрация: 19.04.2016
Сообщений: 21
31.07.2016, 20:42 2
_Astarta_,
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
var
   m,n,i,j,x: integer;
   a: array[1..100,1..100] of integer;
begin
     write('m= '); readln(m);//количество строчек
     write('n= '); readln(n);//количество столбцов
     for i:=1 to m do
      begin
           for j:=1 to n do
            begin
                 a[i,j] := random(10)+1;
                 write(a[i,j],' ');
            end;
           writeln;
      end;
      x:=0;
      for j:=1 to n do
      begin
           for i:=1 to m do
           begin
                for x:=0 to 100 do
                    if exp(ln(2)*x) = a[i,j] then break;
                if x=100 then break;
           end;
           writeln('Для',j,'-го столбца ',i,'-ый элемент = ',a[i,j]);
      end;
end.
0
Платежеспособный зверь
8816 / 4243 / 1617
Регистрация: 28.10.2009
Сообщений: 11,381
31.07.2016, 22:50 3
Askold, число 100 здесь как верхняя граница цикла притянуто за уши, это означает, что программист не смог поставить точный предел и выбирает его наобум, увеличивая перебор, что не является оптимальным решением.
Гораздо проще проверить число по делимости на 2. Как не разделилось - так не степень двойки.
Так к примеру:
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
var
m,n,i,j,x: integer;
   a: array[1..100,1..100] of integer;
begin
     write('m= '); readln(m);
     write('n= '); readln(n);
         for i:=1 to m do
      begin
           for j:=1 to n do
            begin
                 a[i,j] := random(10)+1;
                 write(a[i,j],' ');
            end;
           writeln;
   end;
   for j:=1 to n do
   for i:=1 to m do
               while a[i,j] mod 2=0 do
             a[i,j]:=a[i,j] div 2;
         if a[i,j]<>1 then begin
                writeln('stolbec ',j, ' element nomer ',i);
                break;
                    end;
    end;
    end.
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
31.07.2016, 23:05 4
А еще проще проверить является ли число степенью двойки вот так
Pascal
1
if a[i, j] and (a[i, j] - 1) = 0 then // Только вместо = поставить <>
3
Платежеспособный зверь
8816 / 4243 / 1617
Регистрация: 28.10.2009
Сообщений: 11,381
01.08.2016, 02:13 5
Новичок, ну, это уже высший пилотаж.
Действительно, ведь степень двойки - это единица с нулями, а предыдущее - одни единицы, и произведение будет равно нулю.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var
m,n,i,j,x: integer;
   a: array[1..100,1..100] of integer;
begin
     write('m= '); readln(m);
     write('n= '); readln(n);
         for i:=1 to m do
      begin
           for j:=1 to n do
            begin
                 a[i,j] := random(10)+1;
                 write(a[i,j],' ');
            end;
           writeln;
   end;
   for j:=1 to n do
   for i:=1 to m do
               if a[i, j] and (a[i, j] - 1) <> 0 then begin
                writeln('stolbec ',j, ' element nomer ',i);
                break;
                    end;
    
    end.
0
25 / 1 / 1
Регистрация: 19.04.2016
Сообщений: 21
01.08.2016, 19:26 6
кот Бегемот, понял, спасибо за замечание) не обратил на это внимание.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.08.2016, 19:26
Помогаю со студенческими работами здесь

Определить и напечатать значение и номер наименьшего элемента второго массива, который не входит в состав первого
С клавиатуры ввести два массива целых чисел. Определить и напечатать значение и номер наименьшего...

Для каждой строки массива определить порядковый номер первого элемента, который не делится на 3 и 5 нацело
• для каждой строки массива определить порядковый номер (номер столбца) первого элемента который не...

Определить номер первого элемента матрицы, большего Н
ввести с клавиатуры матрицу 3 на 4 и число Н.выести матрицу на экран и определить номер первого...

Для каждой строки массива определить порядковый номер столбца первого элемента , который не делится на 3 и 5 нацело
Для каждой строки массива определить порядковый номер столбца первого элемента , который не делится...

На главной диагонали матрицы определить номер первого отрицательного элемента
На главной диагонали матрицы B размера m*m определить номер первого отрицательного элемента. Строку...

На главной диагонали матрицы В (m на m) определить номер первого отрицательного элемента
На главной диагонали матрицы В (m на m) определить номер первого отрицательного элемента. Строку...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru