Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 15.07.2019
Сообщений: 35

Описать логическую функцию, которая найдет, есть ли в массиве хотя бы одно нулевое значение

10.11.2019, 20:53. Показов 1898. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите решить задачу.

Проинициализировать массив.Описать логическую функцию,
которая найдет, есть ли в массиве хотя бы одно нулевое значение.
Описать функцию, которая найдет общее число элементов до первого нулевого и после последнего нулевого.
Если ни одного нулевого элемента нет, функция вернет – 1,
Если нулевыми являются первый элемент и последний, функция возвращает 0, иначе значение, отличное от 0.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.11.2019, 20:53
Ответы с готовыми решениями:

Описать логическую функцию same(x), которая проверяет, есть ли в векторе x хотя бы две одинаковые ссылки
Задание: Описать логическую функцию point(x), которая проверяет, есть ли в векторе x хотя бы две одинаковые ссылки Условие: ...

Прибавить 5 ко всем числам в тех строках матрицы, в которых есть хотя бы одно нулевое значение
Здравствуйте! Прошу помочь с программкой. Начало положено в Pascal, но дальше не идет :cry: Текст задачи выглядит так: 1. Дана...

Прибавить 1 ко всем числам в тех столбцах матрицы, в которых есть хотя бы одно нулевое значение
Дана прямоугольная матрица вещественных чисел размером N*M (N,M- вводим с клавиатуры). Требуется прибавить 1 ко всем числам в тех столбцах...

7
0 / 0 / 0
Регистрация: 15.07.2019
Сообщений: 35
28.03.2021, 19:50  [ТС]
В любом учебнике
0
126 / 83 / 44
Регистрация: 18.11.2018
Сообщений: 299
28.03.2021, 20:45
Лучший ответ Сообщение было отмечено xvoe9 как решение

Решение

Цитата Сообщение от xvoe9 Посмотреть сообщение
Описать функцию, которая найдет общее число элементов до первого нулевого и после последнего нулевого.
Если ни одного нулевого элемента нет, функция вернет – 1,
Если нулевыми являются первый элемент и последний, функция возвращает 0, иначе значение, отличное от 0.
Попробуйте:

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 <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
int NullCheck(int* A, int N)
{
    int cnt = 0, check = 0, k = -1, l = -1;
    for (int i = 0; i < N; i++) {
        if (A[i] == 0 && check == 0) {
            k = i;
            check++;
        }
        else if (A[i] == 0 && check == 1) {
            l = i;
        }
    }
    
    if (k != -1 && l != -1) {
        for (int i = 0; i < k; i++) cnt++;
        for (int i = l+1; i < N; i++) cnt++;
        return cnt;
    }
    else if (k == 0 && l == N-1) return 0;
    else if (k == -1 && l == -1) return -1;
    else if (k > -1 && l == -1) {
        for (int i = 0; i < k; i++) cnt++;
        return cnt;
    }
}
 
int main()
{
    srand(unsigned(time(0)));
    int n; cin >> n;
    int* a = new int[n];
    for (int i = 0; i < n; i++) {
        a[i] = rand() % 20 - 10;
        cout << a[i] << " ";
    }
    
    cout << "\n\n" << NullCheck(a, n) << endl;
    delete[] a;
    
    system("pause");
    return 0;
}
Замечание. Вылетает какой-то warning: [Warning] control reaches end of non-void function [-Wreturn-type], но при этом рассчитывает правильно.
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
29.03.2021, 00:05
Цитата Сообщение от woolfskinny Посмотреть сообщение
Вылетает какой-то warning
компилятор видит, что Вы возвращаете значение не при каждом условии (нет последнего else без if) и предупреждает об этом

не применяйте переменную l - она похожа на единицу и затрудняет чтение кода

почему Вы решили написать только вторую часть задачи, ТС видать считает что задача решена полностью

Добавлено через 5 минут
Цитата Сообщение от woolfskinny Посмотреть сообщение
rand() % 20 - 10;
C++
1
rand() % 21 - 10; // диапазон [-10,10]
2
126 / 83 / 44
Регистрация: 18.11.2018
Сообщений: 299
29.03.2021, 00:11
Цитата Сообщение от Yetty Посмотреть сообщение
ТС видать считает что задача решена полностью причём логика задачи предусматривает использования значения, возвращаемого первой функцией во второй
Я думаю, это всё-таки две разные задачи, потому что:
Цитата Сообщение от xvoe9 Посмотреть сообщение
Описать логическую функцию,
которая найдет, есть ли в массиве хотя бы одно нулевое значение.
Как мне кажется, эта информация не нужна никак для второй задачи, только если для "навороченности" программы нужно сделать "функцию в функции".

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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
bool CheckNull(int* A, int N)
{
    bool checkNull = 0;
    for (int i = 0; i < N; i++) {
        if (A[i] == 0) {
            checkNull = 1;
            break;
        }
    }
    return checkNull;
}
 
int main()
{
    int n; cin >> n;
    int* a = new int[n];
    
    for (int i = 0; i < n; i++) {
        a[i] = rand() % 20 - 10;
        cout << a[i] << " ";
    }
    
    cout << "\n\nEst' null?";
    if (CheckNull(a, n) == 1) cout << " Da!" << endl;
    else cout << " Net!" << endl;
    
    system("pause");
    return 0;
}
Добавлено через 2 минуты
Цитата Сообщение от Yetty Посмотреть сообщение
1
rand() % 21 - 10; // диапазон [-10,10]
А у меня получается до 9?
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
29.03.2021, 00:23
Цитата Сообщение от woolfskinny Посмотреть сообщение
это всё-таки две разные задачи
это одна задача
Цитата Сообщение от woolfskinny Посмотреть сообщение
только если для "навороченности"
предложение насчёт связи двух функций я удалил, так как можно реализовать по-разному и действительно это только усложнит код

Добавлено через 2 минуты
Цитата Сообщение от woolfskinny Посмотреть сообщение
А у меня получается до 9?
получается так
rand()%(B-A+1) + A // диапазон от A включительно до B включительно

а что когда-то выпадала десятка ?

Добавлено через 4 минуты
Цитата Сообщение от woolfskinny Посмотреть сообщение
if (CheckNull(a, n) == 1)
лучше так:
C++
1
if (CheckNull(a, n))
1
126 / 83 / 44
Регистрация: 18.11.2018
Сообщений: 299
29.03.2021, 00:25
Цитата Сообщение от Yetty Посмотреть сообщение
а что когда-то выпадала десятка ?
Как-то внимания не обращал до этого, а сейчас только нули ловил, из десяти попыток по 20 элементов в массиве ни одного нуля
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
29.03.2021, 14:52
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
#include <iostream>
#include <cstdlib> 
using namespace std;
 
bool FindNull (double *a, int n)
{    
    for (int i = 0; i < n; i++) 
        if (a[i]==0.) return true;    
    return false;
}
 
int CountElements (double *a, int n)
{   
    int nul=0, idx1=0, idx2=0;
    
    if(!FindNull(a,n)) return -1;
    
    if(a[0]==0. && a[n-1]==0.) return 0;
    
    for (int i = 0; i < n; i++)
    {           
        if (a[i]==0.) 
        {
            nul++;         
            if (nul==1) idx1=i;
            idx2=i;
        }
    }
    
    return n-(idx2-idx1+1);
}
 
int main()
{
    int n; 
    cout << "n="; cin >> n;
    
        double* a = new double[n];
    
    cout << "Enter " << n << "numbers:\n";
    for (int i = 0; i < n; i++) 
        cin >> a[i];
    
    cout << CountElements(a,n) << "\n";    
    
    delete[]a;
system("pause");
return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.03.2021, 14:52
Помогаю со студенческими работами здесь

Описать логическую функцию same (T), определяющую, есть ли в дереве Т хотя бы 2 одинаковых элемента.
Помогите описать логическую функцию same (T), определяющую, есть ли в дереве Т хотя бы 2 одинаковых элемента.

Описать логическую функцию, описывающую,есть ли в дереве Т хотя бы два одинаковых элемента
помогите пожалуйста решить задачу. описать логическую функцию, описывающую,есть ли в дереве Т хотя бы два одинаковых элемента

Описать логическую функцию, проверяющую, есть ли в группе хотя бы 2 человека одного роста
type имя = (Анна, Евгений, Петр, Андрей, Татьяна); данные = record пол (мужчина, женщина); рост 140..200; ...

Описать логическую функцию, проверяющую, есть ли в группе хотя бы два человека одного роста
Помогите пожалуйста !! type имя = (Аня, Валя, Женя, Петя, Саша, Таня, Шура, Юра); данные= record пол: (муж,жен); рост:140..200 end; ...

Описать логическую функцию, определяющую, есть ли в заданном двоичном дереве хотя бы два одинаковых элемента
Описать логическую функцию, определяющую, есть ли в заданном двоичном дереве хотя бы два одинаковых элемента. (желательно конечно с...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru