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

2 мини задачки на массивы - C++

Восстановить пароль Регистрация
 
Рустам777
 Аватар для Рустам777
3 / 3 / 0
Регистрация: 13.04.2011
Сообщений: 32
18.03.2012, 00:36     2 мини задачки на массивы #1
1)Проверить, есть ли в массиве ДВА ПОДРЯД идущих одинаковых элемента.
2)Проверить, содержатся ли в массиве ДВА ПОДРЯД идущих отрицательных элемента.
(Проверку состояния массива оформить в виде логической функции)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2012, 00:36     2 мини задачки на массивы
Посмотрите здесь:

Мини-игра C++
Помогите, пожалуйста, с решением задачки! Массивы C++
Мини-программа C++
Помогите решить задачки на массивы C++
C++ 2 маленькие задачки на массивы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SkyDream
 Аватар для SkyDream
32 / 26 / 2
Регистрация: 01.03.2012
Сообщений: 98
18.03.2012, 00:42     2 мини задачки на массивы #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
bool CheckMas(int mas[], int size_mas, bool negative)
{
    for(int i=1; i<size_mas; i++)
        if(!negative)
            if(mas[i] == mas[i-1])
                return true;
            else ;
        else
            if((mas[i] == mas[i-1]) && (mas[i] < 0) && (mas[i-1] < 0))
                return true;
 
    return false;
}
Функцию писал на коленке, поэтому возможны недочеты.
1 задача: аргумент negative ставь false.
2 задача: аргумент negative ставь true.
Вроде все
R136a1
 Аватар для R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
18.03.2012, 00:43     2 мини задачки на массивы #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
bool isequal(const int *, int);
 
int main()
{
        int m[5];
 
        for(int i = 0; i < 5; i++)
                std::cin >> m[i];
 
        std::cout << std::boolalpha << isequal(m,5-1) << std::endl;
 
}
 
bool isequal(const int *m, int step)
{
        if(!step)
                return false;
        else
                return *(m+step) == *(m+(step-1)) ? true : isequal(m,step-1);
}
Mega-xaxax
 Аватар для Mega-xaxax
37 / 37 / 1
Регистрация: 11.03.2012
Сообщений: 95
18.03.2012, 00:49     2 мини задачки на массивы #4
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
// mini.cpp : main project file.
 
#include "stdafx.h"
 
bool IsEqual(int a, int b);
bool IsNegative(int a, int b);
 
int main()
{
    int *a = new int[5];
    
    // если два подряд идущих элемента
    a[0] = 1;
    a[1] = 5;
    a[2] = 5;
    a[3] = 10;
    a[4] = 11;
 
    bool equalFinded = false;
    for (int i = 0; i < 4; i++) {
        if (IsEqual(a[i],a[i+1])) {
            equalFinded = true;
            break;
        }
    }
    
    // если два подряд идущих элемента
    a[0] = 1;
    a[1] = -5;
    a[2] = -5;
    a[3] = 10;
    a[4] = 11;
 
    bool negativeFinded = false;
    for (int i = 0; i < 4; i++) {
        if (IsNegative(a[i],a[i+1])) {
            negativeFinded = true;
            break;
        }
    }
 
    return 0;
}
 
bool IsEqual(int a, int b) {
    if (a == b) return true;
    else return false;
}
 
bool IsNegative(int a, int b) {
    if ((a < 0) && (b < 0)) return true;
    else return false;
}
Рустам777
 Аватар для Рустам777
3 / 3 / 0
Регистрация: 13.04.2011
Сообщений: 32
18.03.2012, 00:57  [ТС]     2 мини задачки на массивы #5
SkyDream,спасибо конечно я только учусь и функцию непроходил пока что

Добавлено через 5 минут
массив надо самому ввести и если можно с простыми операторами и коммментариями чтоб я мог понять
SkyDream
 Аватар для SkyDream
32 / 26 / 2
Регистрация: 01.03.2012
Сообщений: 98
18.03.2012, 00:59     2 мини задачки на массивы #6
Цитата Сообщение от Рустам777 Посмотреть сообщение
Проверку состояния массива оформить в виде логической функции
Как Вы хотите сделать функцию без функции?)

Если надо на Си:
C
1
2
3
4
5
6
7
8
9
int a[20];
int i;
for(i=0; i<20; i++)
{
  printf("Vvedite %d element: ", i+1);
  scanf("%d", &a[i]);
}  
 
// тут передавай в функцию массив a и его размер (20).
R136a1
 Аватар для R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
18.03.2012, 01:00     2 мини задачки на массивы #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
#include <iostream>
 
bool isequal(const int *, int, bool(*)(const int, const int));
 
bool negative(const int a, const int b)
{
    return ((a < 0) && (b < 0)) && (a == b);
}
bool all(const int a, const int b)
{
    return (a == b);
}
 
int main()
{
    int m[5];
    int choise;
 
    for(int i = 0; i < 5; i++)
        std::cin >> m[i];
 
    std::cout << "1. Все элементы\n2. Отрицательные элементы\n: ";
    std::cin >> choise;
 
    if(choise == 1)
        std::cout << std::boolalpha << isequal(m,5-1,all) << std::endl;
    else if(choise == 2)
        std::cout << std::boolalpha << isequal(m,5-1,negative) << std::endl;
    else
        std::cerr << "Ошибка" << std::endl;
}
 
bool isequal(const int *m, int step, bool(*func)(const int, const int))
{
    if(!step)
        return false;
    else
        return (*func)(*(m+step),*(m+(step-1))) ? true : isequal(m,step-1,(*func));
}
Mega-xaxax
 Аватар для Mega-xaxax
37 / 37 / 1
Регистрация: 11.03.2012
Сообщений: 95
18.03.2012, 01:07     2 мини задачки на массивы #8
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
// mini.cpp : main project file.
#include <iostream>
 
int main()
{
    int *a = new int[5];
    
    // заполняем массив
    for (int i = 0; i < 5; i++) {
        std::cin >> a[i];
    }
 
    // если два подряд идущих одинаковых элемента
    bool equalFinded = false; // изначально одинаковые подряд идущие элементы не найдены
    for (int i = 0; i < 4; i++) {
        if (a[i] == a[i+1]) { // сравниваем элемент с текущим индексом (i) и следующий элемент (i+1)
            equalFinded = true; // если условие выполнено, значит мы нашли два одинаковых элемента в массиве
            break; // выходим из цикла for, поскольку задача выполнена
        }
    }
 
    if (equalFinded) std::cout << "Equals is finded"; // выводим результат, если есть одинаковые подряд идущие элементы
    
    // если два подряд идущих отрицательных элемента
    bool negativeFinded = false; // изначально два подряд идущих элемента не найдены
    for (int i = 0; i < 4; i++) {
        if ((a[i] < 0) && (a[i+1] < 0)) { // сравниваем элемент с текущим индексом (i) и следующий элемент (i+1)
            negativeFinded = true; // если условие выполнено, значит мы нашли два подряд идущих отрицательных элемента в массиве
            break; // выходим из цикла for, поскольку задача выполнена
        }
    }
    if (negativeFinded) std::cout << "Negatives is finded"; // выводим результат, если есть подряд идущие отрицательные элементы
 
    // задерживаем консоль, чтобы мы увидели результат (иначе консоль автоматически закроется)
    int temp = 0;
    std::cin >> temp;
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2012, 01:09     2 мини задачки на массивы
Еще ссылки по теме:

Лабораторная работа. Массивы (задачки к экзамену) C++
C++ Нужен совет для решения задачки*(одномерные массивы)
Мини-брутфорс C++

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

Или воспользуйтесь поиском по форуму:
Рустам777
 Аватар для Рустам777
3 / 3 / 0
Регистрация: 13.04.2011
Сообщений: 32
18.03.2012, 01:09  [ТС]     2 мини задачки на массивы #9
на С++ сам поменяю операторы) благодарю всем))))
Yandex
Объявления
18.03.2012, 01:09     2 мини задачки на массивы
Ответ Создать тему
Опции темы

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