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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Relike
6 / 6 / 0
Регистрация: 24.04.2013
Сообщений: 260
#1

Найти колличество столбцов в которых есть числа с разными знаками - C++

24.12.2013, 00:59. Просмотров 312. Ответов 15
Метки нет (Все метки)

Найти колличество столбцов в которых есть числа с разными знаками
Вот моё творение, что нужно изменить?
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
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int **a, i, j, m, n, count, s = -1; bool b = false;
    cout<<"Vv. kol-vo strok = "; cin>>m;
    cout<<"\nVv. kol-vo stolbc. = "; cin>>n;
    a = new int *[m];
    for(i = 0; i<m; i++){
        a[i] = new int [n];
        }
    for(i = 0; i<m; i++){
        for(j = 0; j<n; j++){
            cout<<"a["<<i+1<<", "<<j+1<<"] = "; cin>>a[i][j];
            }
        }
    for(i = 0; i<m; i++, cout<<"\n"){
        for(j = 0; j<n; j++, cout<<"\t"){
            cout<<a[i][j];
            }
        }
    for(j = 0; j<n; j++){
        if(a[0][j]>0){
        for(i = 0; i<m; i++){
            if(a[i][j]<0) {
                b = true;
                break ;
            }
            }
        }
        else {
        for(i = 0; i<m; i++){
            if(a[i][j]>0) {
                b = true;
                break ;
            }
            }
        }
        if(b) count++;
        }
    cout<<"\nV massive "<<count<<" stobcov s razn. znakami.";
    
    system("pause");
    return EXIT_SUCCESS;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2013, 00:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти колличество столбцов в которых есть числа с разными знаками (C++):

Найти колличество столбцов матрицы, в которых все элементы одинаковы - C++
Здравствуйте. Мне нужно написать программу которая будет в матрице m на n находить колличество столбцов в которых все элементы одинаковы......

Определить, есть ли в заданном массиве два соседних элемента с разными знаками - C++
Дан массив из n элементов. Необходимо определить, есть ли в данном массиве два соседних элемента с разными знаками, и, если есть, вывести...

Найти сумму положительных элементов столбцов в которых есть нулевой элемент - C++
Найти сумму положительных элементов столбцов в которых есть нулевой элемент

Найти все двузначные числа в записи которых есть цифра n или само число делиться на n - C++
Требуется вывести по возрастанию все числа, удовлетворяющие условию задачи

Найти номера тех столбцов матрицы, сумма элементов которых превышает заданную величину, и число таких столбцов - C++
Для матрицы из 3 строк и 7 столбцов отпечатать номератех слобцов, сумма элементов которых превышает заданную величину,и число таких...

Чтение предложений из текста, оканчивающихся разными пунктуационными знаками - C++
Как можно разбить текст на предложения, которые могу заканчиваться разными знаками( типо .?!;). getline в качестве разделения принимает...

15
valeriikozlov
Эксперт С++
4675 / 2501 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
24.12.2013, 07:30 #2
Цитата Сообщение от Relike Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
for(j = 0; j<n; j++){
 if(a[0][j]>0){
 for(i = 0; i<m; i++){
 if(a[i][j]<0) {
 b = true;
 break ;
 }
 }
 }
 else {
 for(i = 0; i<m; i++){
 if(a[i][j]>0) {
 b = true;
 break ;
 }
 }
 }
 if(b) count++;
 }
замените на:
C++
1
2
3
4
5
6
7
8
9
10
11
12
 int l1,l2;
     for(j = 0; j<n; j++){
         i1=0; l2=0; 
        for(i = 0; i<m; i++){
            if(a[i][j]<0) 
                l1++;
            if(a[i][j]>0)
                l2++;
        }
        if(l1>0 && l2>0)
            count++;
     }
1
Relike
6 / 6 / 0
Регистрация: 24.04.2013
Сообщений: 260
24.12.2013, 22:39  [ТС] #3
valeriikozlov,
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
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int **a, i, j, m, n, count, s = -1; bool b = false;
    cout<<"Vv. kol-vo strok = "; cin>>m;
    cout<<"\nVv. kol-vo stolbc. = "; cin>>n;
    a = new int *[m];
    for(i = 0; i<m; i++){
        a[i] = new int [n];
        }
    for(i = 0; i<m; i++){
        for(j = 0; j<n; j++){
            cout<<"a["<<i+1<<", "<<j+1<<"] = "; cin>>a[i][j];
            }
        }
    for(i = 0; i<m; i++, cout<<"\n"){
        for(j = 0; j<n; j++, cout<<"\t"){
            cout<<a[i][j];
            }
        }
        
    int l1,l2;
     for(j = 0; j<n; j++){
         l1=0; l2=0; 
        for(i = 0; i<m; i++){
            if(a[i][j]<0) 
                l1++;
            if(a[i][j]>0)
                l2++;
        }
        if(l1>0 && l2>0)
            count++;
     }
    cout<<"\nV massive "<<count<<" stobcov s razn. znakami.";
    
    system("pause");
    return EXIT_SUCCESS;
}
не работает...блин

Добавлено через 2 минуты
valeriikozlov, Амсори, всё работает, начального значения count небыло. Спасибо большое!!

Добавлено через 16 минут
valeriikozlov, Сейчас пререпроверил, не правильно работает... Не понятно как считает столбцы...
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
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    //Целые : массив, переменные циклов, размерности и счетчик.
    int **a, i, j, m, n, count=0;
    cout<<"Vv. kol-vo strok = "; cin>>m;
    cout<<"\nVv. kol-vo stolbc. = "; cin>>n;
    a = new int *[m];
    for(i = 0; i<m; i++){
        a[i] = new int [n];
        }
    //заполнение массива
    for(i = 0; i<m; i++){
        for(j = 0; j<n; j++){
            cout<<"a["<<i+1<<", "<<j+1<<"] = "; cin>>a[i][j];
            }
        }
    //вывод массива на экран в виде матрицы.
    for(i = 0; i<m; i++, cout<<"\n"){
        for(j = 0; j<n; j++, cout<<"\t"){
            cout<<a[i][j];
            
            }
        }
    //Объявление двух переменных 
    int l1=0,l2=0;
     for(j = 0; j<n; j++){
        for(i = 0; i<m; i++){
            if(a[i][j]<0) 
                l1++;
            if(a[i][j]>0)
                l2++;
        }
        if(l1>0 && l2>0)
            count++;
     }
    cout<<"\nV massive "<<count<<" stobcov s razn. znakami.";
    
    system("pause");
    return EXIT_SUCCESS;
}
0
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
24.12.2013, 22:53 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <iterator>
#include <algorithm>
 
int main()
{
    const int n = 10, m = 20;
    int a[n][m], res = 0;
    
    for (int col = 0; col < m; ++col) 
        res += std::any_of(std::begin(a), std::end(a), 
                [&col](const int a[]){ return a[col] < 0; })
            && std::any_of(std::begin(a), std::end(a), 
                [&col](const int a[]){ return a[col] > 0; });
    
    std::cout << res << std::endl;
 
    return EXIT_SUCCESS;
}
1
Relike
6 / 6 / 0
Регистрация: 24.04.2013
Сообщений: 260
24.12.2013, 23:01  [ТС] #5
outoftime, как понять синтаксис???
0
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
24.12.2013, 23:04 #6
Так наглядней
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <iterator>
#include <algorithm>
#include <iomanip>
 
int main()
{
    const int n = 10, m = 5;
    int a[n][m], res = 0;
    
    for (int i = 0; i < n; ++i, std::cout << std::endl)
        for (int j = 0; j < m; std::cout << std::setw(10) << a[i][j++] << " ");
    
    for (int col = 0; col < m; ++col) 
        res += std::any_of(std::begin(a), std::end(a), 
                [&col](const int a[]){ return a[col] < 0; })
            && std::any_of(std::begin(a), std::end(a), 
                [&col](const int a[]){ return a[col] > 0; });
    
    std::cout << res << std::endl;
 
    return EXIT_SUCCESS;
}
1
Relike
6 / 6 / 0
Регистрация: 24.04.2013
Сообщений: 260
24.12.2013, 23:05  [ТС] #7
outoftime, блин, нас не так учили писать....мы с
C++
1
using namespace std
пишем....многого тут я просто не понимаю(
0
Relike
6 / 6 / 0
Регистрация: 24.04.2013
Сообщений: 260
24.12.2013, 23:11  [ТС] #9
outoftime, оригинальный вариант фразы - "Гугл в помощь")))
0
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
24.12.2013, 23:15 #10
Пространство имен, что и зачем:
http://ru.wikipedia.org/wiki/%D0%9F%...BD%D0%B8%D0%B5)
http://msdn.microsoft.com/ru-ru/library/5cb46ksf.aspx

Добавлено через 2 минуты
std::any_of http://en.cppreference.com/w/cpp/algorithm/all_any_none_of тут вся информация которая тебе надо, если прочтешь вопросы сами отпадут
1
Relike
6 / 6 / 0
Регистрация: 24.04.2013
Сообщений: 260
24.12.2013, 23:16  [ТС] #11
outoftime, не, std:: я понял что такое. А вот например
Цитата Сообщение от outoftime Посмотреть сообщение
any_of
,
Цитата Сообщение от outoftime Посмотреть сообщение
setw(10)
,
Цитата Сообщение от outoftime Посмотреть сообщение
begin(a)
- нет. Ну ладно, спасибо, разбираться сейчас буду!

Добавлено через 48 секунд
outoftime, Проблема, агнлийского не знаю. Parle le francais)))
0
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
24.12.2013, 23:27 #12
Relike, это не художественная литература, автоматический перевод вполне терпимый, только в некоторых местах могут быть ляпы.

Добавлено через 8 минут
std::setw: применяется для форматирования вывода, туда же относиться setfill, setprecision, setbase (это те что чаще всего используются)
http://www.cplusplus.com/reference/iomanip/
http://en.cppreference.com/w/cpp/header/iomanip

std::begin, std::end: возвращают итераторы на начало и конец соответственно.
1
Relike
6 / 6 / 0
Регистрация: 24.04.2013
Сообщений: 260
24.12.2013, 23:57  [ТС] #13
Я нашел ошибку.
C++
1
2
3
4
5
6
7
8
9
10
11
int l1=0,l2=0;
     for(j = 0; j<n; j++){
        for(i = 0; i<m; i++){
            if(a[i][j]<0) 
                l1++;
            if(a[i][j]>0)
                l2++;
        }
        if(l1>0 && l2>0) 
            count++;
     }
l1 и l2 не обнуляются. count всегда увеличивается в силу выполнения условия.
Всем спасибо за помощь!!!!
Вот код, может пригодится кому в будущем :
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
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    //Öåëûå : Г¬Г*Г±Г±ГЁГў, ïåðåìåГ*Г*ûå öèêëîâ, Г°Г*çìåðГ*îñòè ГЁ Г±Г·ГҐГІГ·ГЁГЄ.
    int **a, i, j, m, n, count=0;
    cout<<"Vv. kol-vo strok = "; cin>>m;
    cout<<"\nVv. kol-vo stolbc. = "; cin>>n;
    a = new int *[m];
    for(i = 0; i<m; i++){
        a[i] = new int [n];
        }
    //Г§Г*ïîëГ*ГҐГ*ГЁГҐ Г¬Г*Г±Г±ГЁГўГ*
    for(i = 0; i<m; i++){
        for(j = 0; j<n; j++){
            cout<<"a["<<i+1<<", "<<j+1<<"] = "; cin>>a[i][j];
            }
        }
    //âûâîä Г¬Г*Г±Г±ГЁГўГ* Г*Г* ГЅГЄГ°Г*Г* Гў âèäå Г¬Г*òðèöû.
    for(i = 0; i<m; i++, cout<<"\n"){
        for(j = 0; j<n; j++, cout<<"\t"){
            cout<<a[i][j];
            
            }
        }
    //ÎáúÿâëåГ*ГЁГҐ äâóõ ïåðåìåГ*Г*ûõ 
    int l1=0,l2=0;
     for(j = 0; j<n; j++){
        for(i = 0; i<m; i++){
            if(a[i][j]<0) 
                l1++;
            if(a[i][j]>0)
                l2++;
        }
        if(l1>0 && l2>0) {
            count++;
            l1 = 0; l2 = 0;
        }
     }
    cout<<"\nV massive "<<count<<" stobcov s razn. znakami.\n";
    
    system("pause");
    return EXIT_SUCCESS;
}
0
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
25.12.2013, 00:21 #14
Relike, т.е. мой вообще не годится? (:
1
Relike
6 / 6 / 0
Регистрация: 24.04.2013
Сообщений: 260
25.12.2013, 00:27  [ТС] #15
outoftime, почему? Он намного меньше, и удобнее. Если знать. Нас просто вот так учили...что поделать. Всё равно спасибо и к вам относится, буду изучать после сессии то что вы скинули =)

Добавлено через 3 минуты
outoftime, во надо новую тему создавать...вы не знаете как перейти от алгебраической формы комплексного числа к показательной? В программе с++
0
25.12.2013, 00:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2013, 00:27
Привет! Вот еще темы с ответами:

Определить число соседних двух элементов с разными знаками - C++
Дан одномерный массив a из n элементов, элементы отличны от нуля. Определить число соседних двух элементов с разными знаками Написать код...

Циклы.Найти все натуральные числа не превосходящие заданного n, десятичная запись которых есть строго убывающая последовательность цифр - C++
Может кто поможет новечку с заданием?%-)))заранее благодарю)С меня рек само собой))) Найти все натуральные числа не превосходящие...

Посчитать количество столбцов матрицы в которых есть хотя бы один ноль - C++
б) посчитать количество столбцов, в которых есть хотя бы один ноль.

Сформировать массив К из номеров столбцов матрицы, в которых есть хотя бы один ноль - C++
Заданна матрица вещественных чисел P (n x m). Сформировать массив К из номеров столбцов матрицы, в которых есть хотя бы один ноль. Найти...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.