Форум программистов, компьютерный форум CyberForum.ru

массив - C++

Восстановить пароль Регистрация
 
skaska100
0 / 0 / 0
Регистрация: 16.10.2010
Сообщений: 69
13.12.2010, 23:50     массив #1
помогите пожалуйста

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

только прошу написать просто,т.к многие команды не проходили учитель может не поверить)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2010, 23:50     массив
Посмотрите здесь:

C++ с клавиатуры ввести массив,во второй массив записать нечетные элементы из первого
Можно ли в классе создавать массив переменной длинны. Например динамический массив? C++
Массив: Все элементы массива, кратные трем, записать в одномерный массив. C++
Переписать положительные элементы массива K,кратные пяти в массив M,а остальные-в массив Q. C++
C++ Дан массив целых чисел,произвести для него следующие операции: для каждого из чисел ,входящего в массив,указать,сколько раз оно входит в массив...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Neonjke
18 / 18 / 1
Регистрация: 08.10.2009
Сообщений: 94
14.12.2010, 00:28     массив #2
Вот такая вот реализация. Не учел один момент в ней: если несколько строк с одинаковым количеством повторений в строке. Будет показывать номер первой, в которой встречается такое кол-во "повторюшек".
Постарался максимально все прокомментировать


C++
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include "stdafx.h"
#include <conio.h>
#include <iostream>
using namespace std;
 
 
 
 void main(void)
 {
    int n; // здесь будет лежать кол-во строк в матрице
    int m; // здесь будет лежать кол-во столбцов в матрице
    int i; // счетчик строк
    int j; //счетчик столбцов
    int massive[50][50]; // наш дюбимый двумерный массив
    int nulevoy=0; // счетчик волшебных нулевых столбцов
    int seriya=0; // тут считаем кол-во элементов подряд
    int seriyamax=0; // а тут считаем максимальное кол-во элементов подряд
    int nomerstroki=0; // а сюда запишем номер строки, где большего всего повторюшек
 
    // Спршиваем у великого юзера: сколько строчек и стобцов ты хочешь, о юзверь
    // Кладем его ответы в специально заготовленные переменные n и m
    std::cout << "Vvedite kol-vo strok massiva:" << endl;
    std::cin >> n;
    std::cout << endl;
    std::cout << "Vvedite kol-vo stolbcov massiva:" << endl;
    std::cin >> m;
    std::cout << endl;
 
    // Попросим ввести юзера каждый элемнт массива, по очереди, элемент за элементам, строчка за строчкой
    for (i=0; i<n; i++)
        for (j=0; j<m; j++)
        {   
            std::cout << "Vvedite " << i+1 << "*" << j+1 << " element massiva:" << endl;
            std::cin >> massive[i][j];
        }
    std::cout << endl;
 
 
    // Посчитаем кол-во столбцов с нулевым элементом
    for (j=0; j<m; j++) //Начнем считать со стобцов, т.к интересуют нас стобцы
        for (i=0; i<n; i++)
            if (massive[i][j]==0) // Если элемент массива нулевой
            {
                nulevoy++; // То прибавим счетчик
                break; // И выпрыгнем из цикла (который перемещает нас в строке) - что переведет нас на след. столбец.
            }
 
 
    for (i=0; i<n; i++)
    {   
        for (j=1;j<m;j++) // начнем со 2го элемента в строчке, т.к. сравнивать будем с предыдущим
            if (massive[i][j]==massive[i][j-1]) //Если текущий элемент равен предыдущему в строке
                seriya++; //То прибавим к счетчику серии единичку
 
        if (seriya>seriyamax) //После того как мы прошлись по все строке, если в этой строке подряд было больше, чем до этого
        {
            nomerstroki=i+1; //То запишем в переменную номер этой строки (+1 т.к. начинаем с 0ля)
            seriyamax=seriya; //И теперь максимальное кол-во равных подряд такое же, как в нашей сточке
        }
        
        // А если нет повторяющихся элементов, то все остается как было
 
        seriya=0; // И обнулим наш счетчик повторяшек
    }
 
    std::cout << endl;
    std::cout << endl;
 
    // Выведем нашу матрицу
    for (i=0; i<n; i++)
    {   for (j=0; j<m; j++)
            std::cout << massive[i][j] << " ";
        std::cout << endl;
    }
        
    std::cout << endl;
 
    // Выведем наши результаты
    std::cout << "Stolbcov c 0 elementom vsego: " << nulevoy << endl;
    
    if (nomerstroki>0) //Если у нас переменная хоть раз изменилась, то есть строки, где элементы повторяются
        std::cout << "Samaya dlinnaya seriya povt. elementov v " << nomerstroki << " stroke" << endl;
    else //А на нет и суда нет =)
        std::cout << "Nigde v matrice net povt. elementov v strokah!";
 
    std::cout << endl;
 
    std::system("pause"); //Экран, замри!!!
            
 }
skaska100
0 / 0 / 0
Регистрация: 16.10.2010
Сообщений: 69
14.12.2010, 17:14  [ТС]     массив #3
а мне нужно было в разных программах по идее написать
т.е 2 программы
skaska100
0 / 0 / 0
Регистрация: 16.10.2010
Сообщений: 69
15.12.2010, 19:35  [ТС]     массив #4
ну что знает ктонибуть?
Yandex
Объявления
15.12.2010, 19:35     массив
Ответ Создать тему
Опции темы

Текущее время: 14:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru