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

Сформировать матрицу В удалив из А столбцы, которые содержат элемент равный 7 - C++

Восстановить пароль Регистрация
 
BorAl
0 / 0 / 0
Регистрация: 09.12.2010
Сообщений: 22
16.04.2011, 16:44     Сформировать матрицу В удалив из А столбцы, которые содержат элемент равный 7 #1
Дана матрица А. Сформировать матрицу В удалив из А столбцы которые содержат элемент равный 7...

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
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstdlib>
using namespace std;
 
void arrayInput(ifstream& in, double a[][5], int n, int m)
{
    int i,j;
 
    in.open("D:\\BETA\\matr.cpp");
    
    if (in.fail())
        {cout<<"\n Не возможно открыть файл!!! \n";
         exit(1);
        }
    
    for(i=0;i<n;i++)
        {for(j=0;j<m;j++)
            {in>>a[i][j];
            }
        }
 
    in.close();
}
void arrayOutput(double a[][5], int n, int m)
{
    int i,j;
 
    for(i=0;i<n;i++)
        {for(j=0;j<m;j++)
            {cout<<setw(7)<<a[i][j];
            }
            cout<<endl;
        }
}
void ColumnDel(double a[][5], int n, int m,  int& k)
{ int i,j;
int ind_j;
int kl;
k=m-kl;
 
for(i=0;i<n;i++)
        {for(j=0;j<m;j++)
            {if(a[i][j]==7)
                {ind_j=j;
                kl++;
                }
            }
        }
 
for(i=0;i<n;i++)
        {for(j=ind_j;j<(m-1);j++)
            
                {a[i][j]=a[i][j+1];
                }               
        }
 
}
 
                            
void main()
{
    setlocale (LC_ALL, "Russian");
 
    double a[4][5];
    int k;
    
    ifstream in;
    arrayInput(in, a, 4, 5);
    cout<<"\n Матрица А\n";
    arrayOutput(a, 4, 5);
    cout<<endl;
 
    ColumnDel(a, 4, 5, k);
    cout<<"\n Матрица B\n";
    arrayOutput(a, 4, k);
}
много чего перепробовал ..вот написал то что было последним.. помогите если сможете.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2011, 16:44     Сформировать матрицу В удалив из А столбцы, которые содержат элемент равный 7
Посмотрите здесь:

C++ Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент
C++ Сумма элементов в тех строках, которые содержат хотя бы 1 отрицательный элемент;
В с++ такая задача: проверить, все ли столбцы матрицы содержат хотя бы один положительный элемент. C++
C++ Найти сумму элементов в тех строках которые, содержат хотя бы один отрицательный элемент
Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fruktik
 Аватар для fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
16.04.2011, 20:18     Сформировать матрицу В удалив из А столбцы, которые содержат элемент равный 7 #2
а если без открытия файлов создать массив А и переписать его в новый без столбцов с 7?)
BorAl
0 / 0 / 0
Регистрация: 09.12.2010
Сообщений: 22
16.04.2011, 20:25  [ТС]     Сформировать матрицу В удалив из А столбцы, которые содержат элемент равный 7 #3
чтение матрица А из файла это обязательное Условие... там потом еще трансопнировать надо..но это я понимаю .. я немогу реализовать то, как удалить вот эти столбцы!
popov654
 Аватар для popov654
31 / 31 / 2
Регистрация: 09.04.2011
Сообщений: 114
16.04.2011, 22:13     Сформировать матрицу В удалив из А столбцы, которые содержат элемент равный 7 #4
Можно сделать код эффективнее, помещая найденные номера столбцов в какой-нибудь массив/список, если память не критична. А счётчик уменьшать на единицу с каждым найденным столбцом. Потом пройтись один раз и переписать только нужные элементы. Это будет работать быстрее.

Но в принципе код выглядит вполне правильно... Что пишет компилятор?
BorAl
0 / 0 / 0
Регистрация: 09.12.2010
Сообщений: 22
16.04.2011, 22:15  [ТС]     Сформировать матрицу В удалив из А столбцы, которые содержат элемент равный 7 #5
Все компилируется нормально!
вот та самая матрица!!!
2 10 13 12 1
8 8 3 4 6
5 7 5 1 2
7 3 4 2 0
нужного результата не получаю!!! он удаляет только первый столбец и еще копирует последний !!!
popov654
 Аватар для popov654
31 / 31 / 2
Регистрация: 09.04.2011
Сообщений: 114
16.04.2011, 23:51     Сформировать матрицу В удалив из А столбцы, которые содержат элемент равный 7 #6
он удаляет только первый столбец
Вот это реально странно. Судя по Вашему коду, удаляться должен только последний столбец (но отнюдь не все)
У Вас по алгоритму запоминается только последний индекс, и удаление однократное.
Насчёт копирования - вполне предсказуемо. Вы же сдвинули столбцы, но старые-то остались в памяти на последних позициях

Поправьте код удаления и вывод сделайте с поправкой на m-k1, аргументом её передайте что ли...
BorAl
0 / 0 / 0
Регистрация: 09.12.2010
Сообщений: 22
17.04.2011, 14:30  [ТС]     Сформировать матрицу В удалив из А столбцы, которые содержат элемент равный 7 #7
На словах я не все понял..можно кодом продемонстрировать?

Добавлено через 4 часа 53 минуты
Вот я сделал! работает более коректно чем предыдущая толкьо результат всеравно нужный не жает!!!
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
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstdlib>
using namespace std;
 
void arrayInput(ifstream& in, double a[][5], int n, int m)
{
        int i,j;
 
        in.open("D:\\BETA\\matr.cpp");
        
        if (in.fail())
                {cout<<"\n Не возможно открыть файл!!! \n";
                 exit(1);
                }
        
        for(i=0;i<n;i++)
                {for(j=0;j<m;j++)
                        {in>>a[i][j];
                        }
                }
 
        in.close();
}
void arrayOutput(double a[][5], int n, int m)
{
        int i,j;
 
        for(i=0;i<n;i++)
                {for(j=0;j<m;j++)
                        {cout<<setw(7)<<a[i][j];
                        }
                        cout<<endl;
                }
}
void Del(double a[][5], int n, int m,  int& k)
{
    int i,j;
    k=m-1;
    for(i=0;i<n;i++)
        {for(j=0;j<m-1;j++)
            {a[i][j]=a[i][j+1];
            }
        }
}
void ColumnDel(double a[][5], int n, int m)
{
    int i,j;
    int k;
 
    for(i=0;i<n;i++)
        {for(j=0;j<m;j++)
            {if(a[i][j]==7)
                {Del(a,m,n,k);
                }
            }
        }
}
 
                                                        
void main()
{
        setlocale (LC_ALL, "Russian");
 
        double a[4][5];
        int k;
        
        ifstream in;
        arrayInput(in, a, 4, 5);
        cout<<"\n Матрица А\n";
        arrayOutput(a, 4, 5);
        cout<<endl;
 
        Del(a, 4, 5, k);
        cout<<"\n Матрица B\n";
        arrayOutput(a, 4, k);
}
Удаляет только один столбец первый где найдет 7.. а второй не трогает!!
popov654
 Аватар для popov654
31 / 31 / 2
Регистрация: 09.04.2011
Сообщений: 114
18.04.2011, 03:09     Сформировать матрицу В удалив из А столбцы, которые содержат элемент равный 7 #8
Я завтра Ваш код могу потестить, если Вам ещё не поздно. Пока вижу только что Вы ошиблись в одном месте с порядком следования аргументов m и n, хотя возможно дело вовсе не в этом...
BorAl
0 / 0 / 0
Регистрация: 09.12.2010
Сообщений: 22
18.04.2011, 19:02  [ТС]     Сформировать матрицу В удалив из А столбцы, которые содержат элемент равный 7 #9
Ну на самом деле на много больше и даже не в самом коде..а даже в алгоритме!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2011, 11:06     Сформировать матрицу В удалив из А столбцы, которые содержат элемент равный 7
Еще ссылки по теме:

Определить сумму элементов в тех столбцах, которые содержат хотя бы один положительный элемент C++
Сформировать матрицу, в которой столбцы расположены в порядке возрастания сумм их элементов C++

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

Или воспользуйтесь поиском по форуму:
popov654
 Аватар для popov654
31 / 31 / 2
Регистрация: 09.04.2011
Сообщений: 114
19.04.2011, 11:06     Сформировать матрицу В удалив из А столбцы, которые содержат элемент равный 7 #10
BorAl, в алгоритме - в каком месте? Я что-то проглядел?
Yandex
Объявления
19.04.2011, 11:06     Сформировать матрицу В удалив из А столбцы, которые содержат элемент равный 7
Ответ Создать тему
Опции темы

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