CyberForum.ru - Форум программистов и сисадминов
Вернуться   Форум программистов и сисадминов CyberForum.ru > Форум web-программистов > Форум Python

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

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


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

заранее спасибо
Djinny32 вне форума
Другие темы раздела
Литература по Python
Вопрос до неприличия прост: Литература для новичка , для сведущего , для вечернего чтения,видеоуроки справочники предлогать Просьба немного описывать то что придлагаете. Литература по Python
Python работа с текстовым файлом.
Пусть дан текстовый файл. Подсчитать количество пустых строк.. работа с текстовым файлом.
Старый 17.12.2009, 01:25   #2
qstorm
Новичок
 
Регистрация: 11.11.2009
Адрес: Краснодар
Сообщений: 18
Репутация: 10 (10)
Радость Re: матрица

вот этот код вроде работает как нужно
Код 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
 
# -*- 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 строк.
qstorm вне форума
Старый 17.12.2009, 15:49  [ТС]   #3
Djinny32
Новичок
 
Регистрация: 15.12.2009
Сообщений: 4
Репутация: 0 (0)
По умолчанию Re: матрица

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

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

Код 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
60
61
62
 
# -*- 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)
 
 
qstorm вне форума
Ответ Создать новую тему

Похожие темы
Тема Автор
Turbo Pascal Дана матрица А размерности (n*n). Получить матрицу С(А*Аt)/2, где At-транспонированная матрица.
Дана матрица А размерности (n*n). Получить матрицу С(А*Аt)/2, где At-транспонированная матрица. Заполнить с помощью датчика случайных чисел.
Leylala
Turbo Pascal Дана квадратная матрица А порядка n. Проверить, является ли матрица единичной.
Ребят,помогите решить задачу "Дана квадратная матрица А порядка n. Проверить, является ли матрица единичной"
WR10
Pascal (Паскаль) дана действительная квадратная матрица порядка n. Выяснить сколко положительных элементов содержит матрица И ИХ ИНДЕКСЫ.
дана действительная квадратная матрица порядка n. Выяснить сколко положительных элементов содержит матрица И ИХ ИНДЕКСЫ.
Denny123
Pascal (Паскаль) дана действительная квадратная матрица порядка n. Выяснить сколко положительных элементов содержит матрица И ИХ ИНДЕКСЫ.
дана действительная квадратная матрица порядка n. Выяснить сколко положительных элементов содержит матрица И ИХ ИНДЕКСЫ.
Denny123
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 );
Rise of Death
Опции темы

Текущее время: 05:04. Часовой пояс GMT +4.

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