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

Массив: Удалить строки заданного массива, в которых есть хотя бы один особый элемент - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Почему программа неправильно считает сумму? http://www.cyberforum.ru/cpp-beginners/thread1580197.html
Вот задание: http://cs628818.vk.me/v628818636/23176/6LFbXBEOAPQ.jpg Вот код: #include "stdafx.h" #include <stdio.h> #include <math.h> float iter(int k1) {
C++ Матрица. С++ Помогите. Для матрицы 4х4 найти такое k где строка k матрицы совпадает с k столбцом. И найти сумму в тех строках в которых есть хотя бы один отрицательный элемент. Очень надо. Помогите +1. http://www.cyberforum.ru/cpp-beginners/thread1580192.html
C++ Неблокирующие и асинхронные сокеты
В чем собственно различие? Встречал, что асинхронные сокеты невозможно использовать в консольных приложениях, только не ясно почему. И есть ли где-нибудь доступный пример приложения winsock2, использующее неблокирующие сокеты? Спасибо
C++ Привести матрицу к треугольному виду Гауссом (не могу найти работающий код)
Нужен код для приведения матрицы к треугольному виду (матрица статическая, целочисленная). Пробовал гуглить, в том числе и тут. Перепробовал кучу кода, ничто корректно не работает, много кода просто неверно переводит матрицу к треугольному виду, либо код слишком мудрёный. Либо дайте нормальную ссылку на РАБОТАЮЩИЙ код, который правильно переводит матрицу в треугольный вид методом Гаусса,...
C++ Воиск файла с введенным названием http://www.cyberforum.ru/cpp-beginners/thread1580182.html
Нужно прочитать название файла(консолька), а потом найти соответствующий файл в каталоге с подкаталогами. Все файлы имеют .txt формат. (Путь: D:\\cppproject\\files, а в files есть еще папки, в которых файлы)... Пример: Вводим file1 Читаем и ищем такой файл по пути... //Например мы знаем что он в каталоге "D:\\cppproject\\files\\abcfiles\\file1.txt" Поиск долен идти по...
C++ Решение задачи с использованием while или do while Дана последовательность целых чисел, за которой следует 0. Найти сумму элементов с четными номерами из этой последовательности. подробнее

Показать сообщение отдельно
lHisoka
0 / 0 / 0
Регистрация: 13.11.2015
Сообщений: 6
15.11.2015, 13:41  [ТС]     Массив: Удалить строки заданного массива, в которых есть хотя бы один особый элемент
Вообщем вот что у меня вышло за выходные.

Кликните здесь для просмотра всего текста
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
#include <iostream> 
#include "math.h" 
#include "time.h" 
#include <string> 
#include <sstream> 
 
using namespace std;
 
const int N = 5;
 
bool simple(unsigned long chislo)
{
    if (chislo == 2)
    {
        return true;
    }
 
    if (chislo == 0 || chislo == 1 || chislo % 2 == 0)
    {
        return false;
    }
 
    for (unsigned long i = chislo; i * i <= chislo; i += 2)
    {
        if (chislo % i == 0)
        {
            return false;
        }
    }
    return true;
}
 
bool fibonachi(unsigned long n)
{
    unsigned long a, b(1), c(1);
    while (c < n)
    {
        a = b;
        b = c;
        c = a + b;
    }
    return c == n;
}
 
std::string to_string(unsigned long n)
{
    std::stringstream ss;
    ss << n;
    return ss.str();
}
 
unsigned long to_int(std::string s)
{
    std::stringstream ss(s);
    unsigned long n;
    ss >> n;
    return n;
}
 
int main(int argc, wchar_t argv[])
{
    setlocale(LC_ALL, "Russian");
    srand(time(NULL));
    int a[N][N];
    int f = 0, g = 0, max = 0;
    unsigned long int SP = 0;
    for (int i = 0; i<N; i++)
    {
        for (int j = 0; j<N; j++)
            a[i][j] = rand() % 89 + 10;
    }
 
    for (int i = 0; i<N; i++)
    {
        for (int j = 0; j<N; j++)
        {
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
 
    cout << "\n";
    cout << "числа, удовлетворяющие условию: ";
    cout << "\n";
 
    while (max != 0)
    {
        for (int i = 0; i<N; i++)
        {
            for (int j = 0; j<N; j++)
            {
                string s(to_string(a[i][j])), s1, s2;
 
                s1 = s.substr(0, ceil(s.size() / 2));
                s2 = s.substr(s.size() / 2, s.size());
 
                if (simple(to_int(s1)) && fibonachi(to_int(s2)))
                {
                    max = a[i][j];
                    f = i;
                    g = j;
                }
            }
        }
    }
 
    for (int i = 0; i<N; i++)
    {
        for (int j = 0; j<N; j++)
        {
            string s(to_string(a[i][j])), s1, s2;
 
            s1 = s.substr(0, ceil(s.size() / 2));
            s2 = s.substr(s.size() / 2, s.size());
 
            if (simple(to_int(s1)) && fibonachi(to_int(s2)))
            {
                cout << " " << a[i][j] << " ";
                if (max < a[i][j])
                {
                    max = a[i][j]; //Элементы тут
                    f = i; //Координаты
                    g = j;
                
                }
            }
        }
    }
 
    cout << "\n";
    cout << "Максимальный элемент = " << max << "\n Находящийся на позиции [" << f + 1 << "][" << +1 << "]";
    cout << "\n";
    cout << "Произведение элементов:";
    cout << "\n";
    
    /*for (int i=1; i<N; i++)
    {
        a[i][g] = a[i + 1][g];
    }
    for (int i = 1; i<N; i++)
    {
        a[f][i] = a[f][i + 1];
    }
 
    for (int i = 0; i<N; i++)
    {
        for (int j = 0; j<N; j++)
        {
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
    */
 
    cout << "Удаление строки " << f + 1 << " и столбца " << g + 1 << endl;
    for (int i = f + 1; i<N; i++)
        for (int j = 0; j<N; j++)
            a[i - 1][j] = a[i][j];
    for (int i = 0; i<N; i++)
        for (int j = g + 1; j<N; j++)
            a[i][j - 1] = a[i][j];
    m = N - 1;
    for (int i = 0; i<m; i++)
    {
        for (int j = 0; j<m; j++)
        {
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
 
    cout << "Скалярное произведение = " << SP;
    cout << "\n";
    system("pause");
}


Вот только у меня ошибка с удалением строки, я хз почему "m" подчёркивает и почему там число 2 как 1 считается. Подскажите пожалуйста.
Миниатюры
Массив: Удалить строки заданного массива, в которых есть хотя бы один особый элемент  
 
Текущее время: 15:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru