Форум программистов, компьютерный форум CyberForum.ru Форум программистов | Компьютерный форум | Форум web-программистов | Форум по электронике и бытовой технике | Форум о софте | Научный форум | Карьера и бизнес
CyberForum.ru - форум программистов и сисадминов > >
Восстановить пароль Регистрация

Ответ Создать новую тему
 
16.12.2009, 16:21   #1
Djinny32
Новичок
Регистрация: 15.12.2009
Сообщений: 4
Репутация: 0 (0)
матрица / Python

Помогите пожалуйста


Дана целочисленная прямоугольная матрица. Определить количество столбцов, не содержащих ни одного нулевого элемента.

заранее спасибо
16.12.2009, 16:21
AdAgent
Объявления
17.12.2009, 01:25   #2
qstorm
Новичок
Регистрация: 11.11.2009
Сообщений: 18
Репутация: 10 (10)
матрица

вот этот код вроде работает как нужно
Код Python
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
# -*- coding: utf-8 -*-
 
##матрица
matrix = [[1,7,1,0,6,4],
          [4,5,1,5,6,4],
          [1,1,1,1,1,1],
          [1,7,6,6,1,4],
          [1,7,6,5,6,4],
          [1,7,6,5,6,4]]
 
i=0
j=0
kolvo_stolbzovravnih0 = 0
## конец массива
end = len(matrix)
## перебираем весь массив
while(j!=end):
    ## есди пересмотрели весь столбец, начинаем новый
    if(i==end):
        j=j+1
        i=0
    ## если просмотрели всю матрицу то выходим из цикла
    if(j==end):
        break
    ## нашли 0 увеличиваем кол-во найденых столбцов с нулем, на 1
    if(matrix[i][j]==0):
        i=0
        j=j+1
        kolvo_stolbzovravnih0=kolvo_stolbzovravnih0+1
        continue
    i=i+1
## выводим ответ
print u'Количество столбцов которые не содержат 0 =',len(matrix)-kolvo_stolbzovravnih0
спать уже хочется, так что за качество кода не отвечаю, ночь уже как бэ.
p.s. я python еще не очень хорошо знаю, так что не судите строго. тут 100% как то можно сделать по питоновски изящно в ~10 строк.
Другие темы раздела
Литература по Python Python
Вопрос до неприличия прост: Литература для новичка , для сведущего , для вечернего чтения,видеоуроки справочники предлогать Просьба немного описывать то что придлагаете
Python работа с текстовым файлом.
Пусть дан текстовый файл. Подсчитать количество пустых строк.
17.12.2009, 15:49  [ТС]   #3
Djinny32
Новичок
Регистрация: 15.12.2009
Сообщений: 4
Репутация: 0 (0)
матрица

а как будет,если матрица не дана, а создать в ходе программы, вводя размерность матрицы, а значения случайны
17.12.2009, 17:46   #4
qstorm
Новичок
Регистрация: 11.11.2009
Сообщений: 18
Репутация: 10 (10)
матрица / Python

Полагаю, что вот так:

Код Python
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
# -*- coding: utf-8 -*-
 
n = raw_input("Input size: ")
 
 
x,y = 0,0
## вспомогательная и главная матрица
tmpm = []
matrix = []
 
while x < int(n):
    y=0
    while y < int(n):
        ## подсказка для ввода
        info_to_app = str(x)+","+str(y)
        ## добавляем в вспомогательную матрицу, введенное с клавиатуры число
        tmpm.append(int(raw_input(info_to_app)))
        y=y+1
    ## добавляем в главную матрицу вспомогательную матрицу и очищаем вспомогательную матрицу
    matrix.append(tmpm)
    tmpm=[]
    x = x+1
 
 
##отображаем полученную матрицу
for i in  matrix:
    print i
 
##матрица
##matrix = [[1,3,1,4,0,7],
##          [4,5,1,5,6,4],
##          [1,3,1,0,1,3],
##          [1,7,6,4,1,4],
##          [1,7,6,5,6,4],
##          [1,7,6,4,6,4]]
 
kolvo_stolbzovravnih0 = 0
## хранение номеров столбцов где есть ноль
tmp=[]
 
i=0
 
while i < len(matrix):
    j=0
    while j < len(matrix[i]):
        if(matrix[i][j]==0):
            ## если такого номера столбца нет, то добавляем его
            if(tmp.count(matrix[i].index(matrix[i][j]))==0):
                ## добавляем номер столбца с 0
                tmp.append(matrix[i].index(matrix[i][j]))
            ## убирается 0, что бы не мешал с этом же ряду
            matrix[i][j] = -1
        j=j+1
    i=i+1
 
 
 
print "-"*10
print len(matrix) - len(tmp)
17.12.2009, 17:46
Yandex
Объявления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Автор Дата
C++ дана квадратичная матрица z[n][n]. составить программу, которая если матрица симметричная(транспонированная матрица равна исходной), сделает ее не сим
помогите пожалуйста. условие: дана квадратичная матрица z. составить программу, которая если матрица симметричная(транспонированная матрица равна исходной), сделает ее не симметричной, сдвинув строку, содержащую элемент с максимальным значением на 1 элемент вправо. сижу уже который день....
С++ для начинающих triish 16.01.2014 23:24
Turbo Pascal Дана матрица А размерности (n*n). Получить матрицу С(А*Аt)/2, где At-транспонированная матрица.
Дана матрица А размерности (n*n). Получить матрицу С(А*Аt)/2, где At-транспонированная матрица. Заполнить с помощью датчика случайных чисел.
Turbo Pascal Leylala 05.12.2011 15:42
Turbo Pascal Дана квадратная матрица А порядка n. Проверить, является ли матрица единичной.
Ребят,помогите решить задачу "Дана квадратная матрица А порядка n. Проверить, является ли матрица единичной"
Turbo Pascal WR10 03.05.2011 19:12
DirectX Непонятки с DirectX (матрица поворота, камера, матрица проекции)
Возник вопрос по DirectX, точнее по матрицам Вопрос 1: D3DXMATRIXA16 matWorld; UINT iTime = timeGetTime() % 10000; FLOAT fAngle = iTime * (2.0f * D3DX_PI) / 10000.0f; D3DXMatrixRotationY( &matWorld, fAngle ); g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
DirectX Rise of Death 25.11.2009 15:21
Turbo Pascal Дана матрица. Найти индекс минимального элемента матрицы. Матрица — 15 строк на 10 столбцов
Помогите составить блок-схему или программу на Turbo Pascal. Дана матрица. Найти индекс минимального элемента матрицы. Матрица — 15 строк на 10 столбцов. Спасибо!
Turbo Pascal abit-2009 12.10.2009 14:48
Опции темы


Текущее время: 15:49. Часовой пояс GMT +4.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.