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

Уплотнить матрицу - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Использование строк.Использование структур http://www.cyberforum.ru/cpp-beginners/thread705153.html
Задачка: Дана строка,состоящая из групп нулей и едениц. Найти и вывести на экран группы с нечетным количеством символов. И еще одна: В справочной автовокзала хранится расписание движения...
C++ Visual C++ 2012 Ultimate Доброго времени суток. Скачал сегодня Вижуал с++ 2012. Разъясните по хардкору, как в нем работать, а то до этого в билдере работал. Для начала, что не так в этой программе ? http://www.cyberforum.ru/cpp-beginners/thread705152.html
С++, MFC, разделение строки типа CString на слова C++
Есть три списка ListBox и одно поле редактирования EditBox. В EditBox вводится информация в формате «Фамилия Имя Отчество». По завершении ввода фамилия должна появиться в списке «Фамилия», имя в...
Проблемы с задачей! (вывести на экран квадрат Пифагора - таблицу умножения) C++
Помогите с задачей! Надо: 1)Обязательно цыкл for. 2)Cout/cin должны быть. 3)И подробно обьясните что к чему... Цыклы очень тяжко даються... Задача: Написать програму, которая выводить на экран...
C++ _getch() не дожидается реакции от пользователя http://www.cyberforum.ru/cpp-beginners/thread705119.html
Есть такой код, который что-то делает пока не будет нажат <ENTER>. key = _getch(); if(key!=13) do { }while((key=_getch())!=13); Но если во время работы программы, до этого места,...
C++ Вычислить сумму элементов, образующих символ в двумерном массиве 1. Задана матрица чисел: c Вычислить сумму элементов, образующих символ --*--------- *-- ----*----- *---- ------*--*------ --**********-- -----* --*------- ----* ----*------ --*--------... подробнее

Показать сообщение отдельно
TrueBit
96 / 96 / 12
Регистрация: 19.11.2012
Сообщений: 195
22.11.2012, 06:56
Вы присваиваете переменной типа double значение типо int - так делать нехорошо. Возможна потеря данных. В данной целочисленной матрице double использовать нет смысла. Вот дописал некий код с функциями для рассмотрения, вроде работает

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
//http://www.cyberforum.ru/cpp-beginners/thread705155.html
#include <iostream>
#include <math.h>
using namespace std;
#define size 10
#define column 10
#define row 10
void print_matrix(int m_pointer[column][row]) {
    for(int i=0;i<column;i++) {
    for (int j=0;j<row;j++)
        printf("%5d",m_pointer[i][j]);    
    cout << endl << endl;
    }
}
bool null_string(int m_pointer[column][row],int n) { //проверка является ли строки нулевой
    for(int j=0;j<row;j++) {
        if(m_pointer[n][j]!=0) return false; //не все элементы строки нулевые 
    }
    return true; //все элементы строки нулевые
}
bool null_stolb(int m_pointer[column][row],int m) { //проверка является ли строки нулевой
    for(int i=0;i<column;i++) {
        if(m_pointer[i][m]!=0) return false; //не все элементы столбца нулевые 
    }
    return true; //все элементы столбца нулевые
}
void main ()
{
    int mas[column][row]=
    {{ -16, -78,  0,  -6, -29, -19,  0, -65, -88, -51},
     { -79, -22,  0, -25, -62, -69,  0, -59, -75, -89},
     { -87, -95,  0, -85, -49, -75,  0, -73, -59, -52},
     {   0,   0,  0,   0,   0,   0,  0,   0,   0,   0},
     { -99, -21,  0,  64,  22,  -2,  0, -84,  -1, -71},
     { -25,  47,  0,  43,  15, -44,  0,  61,   4,  74},
     {  88, -61,  0, -64, -83,  97,  0,  90,  15,   8},
     {   0,   0,  0,   0,   0,   0,  0,   0,   0,   0},
     {  98,  58,  0, -29,  95,  62,  0,  89,  36, -32},
     {  78,  60,  0, -18,  30, -13,  0, -92,   1, -38}};
    setlocale(LC_ALL,"rus");
//печать исходной
    //print_matrix(mas);
//1)
    for(int i=0;i<column;i++) {
        for(int j=0;j<row;j++)
            if (mas[i][j]>0) {
                cout<<"Первая строка с положительным элементом: "<<i<<endl;
                goto m1;
            }
    }
m1:
//2
    //преобразуем строки
    for(int i=0;i<column;i++) {
        if(null_string(mas,i)) //если строка нулевая
            for(int i2=i; i2<column; i2++) //то смещаем её в конец массива
                for(int j=0;j<row;j++) {
                    if(i2==column-1) //если последняя забиваем нулями)
                        mas[i2][j]=0;
                    else //иначе берем значения из слудующей строки
                        mas[i2][j]=mas[i2+1][j];
                }
 
    }
    //печать что получилосб
    //print_matrix(mas);
 
    //преобразуем столбци
    for(int j=0;j<row;j++) {
        if(null_stolb(mas,j)) { //если столбец нулевой
            for(int j2=j;j2<row;j2++) { //то начиная с этого столбца смещаем его в конец
                for(int i=0;i<column;i++) {
                    if(j2==row-1) //если последний то забиваем нулями
                        mas[i][j2]=0;
                    else         //иначе берем элемент из слудующего столбца
                        mas[i][j2]=mas[i][j2+1];
                }
            }
        }
    }
    //печать что получилосб
    print_matrix(mas);
    getchar();
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru