Массив, функия и bool - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Мое активное изучение языка С продолжается. Снова вопрос мой связан с функциями. Но теперь уже с совсем другим типом переменных: bool. условие:
Разработать подпрограмму, которая возвращает значение TRUE, если в двух заданных одномерных массивах нет равных элементов (не обязательно стоящих на одинаковых позициях в массивах), и значение FALSE в против-ном случае. Программа с помощью этой подпрограммы должна проверять наличие одинаковых элементов в массивах, и в случае обнаружения таковых печатать на экране «Есть совпадения», в противном случае печатать «Совпадений не обнаружено».
Написал сам код, но почему-то постоянно выводит "Есть совпадения". Помогите исправить ошибки:
#include <iostream>
#include <iomanip>
#include <windows.h>
using namespace std;
bool f(double *A,double *B,int g,int h)     // проверяем наличие одинаковых элементов в массивах
{
for(int j=0; j<g; j++)
{
for(int i=0; i<h; i++)
{       if (A[j]=B[i])
{
            return true;
}
}}
else
    return false;
 
    }
int main()
{
    int i,g,j;
    const int ui(20);
    double arrP[ui],arrB[ui];
 
printf("\nКол-во элементов массива P: ");
scanf("%d",&g);
printf("\nКол-во элементов массива B: ");
scanf("%d",&j);
printf("\nВведите массив P: ");
    for (i=0;i<g;i++)
    {
        printf("\nP[%d]: ",i);
        scanf("%lf",&arrP[i]);
        }
printf("\nВведите массив B: ");
    for (i=0;i<j;i++)
    {
        
        printf("\nB[%d]: ",i);
        scanf("%lf",&arrB[i]);
        }
printf("\nВведенный массив P:\n ");
    for (i=0;i<g;i++)
    {
            printf("%4.3lf ",arrP[i]);
    }
    printf("\nВведенный массив B:\n");
    for (i=0;i<j;i++)
    {
            printf("%4.3lf ",arrB[i]);
    }
 
    if (f(arrP,arrB,g,j)==true)
    {
        printf("\n\nЕсть совпадения\n\n");
    }
    else
    {
    printf("\n\nСовпадений не обнаружено\n\n");
        }
    return 0; 
    }
и еще, правильно ли я сделал проверку наличия одинаковых элементов в массивах? Не обязательно стоящих на одинаковых позициях в массивах?

Решение задачи: «Массив, функия и bool»

textual
Листинг программы
#include "stdio.h"
#define ARR_SIZE 5
 
/* проверяем наличие одинаковых элементов в массивах */
int f(double *A,double *B,int g,int h)
{
    int i, j; 
    for(j = 0; j < g; ++j)
        for(i = 0; i < h; ++i)
            if( A[j] == B[i] )              
                return 1;
    return 0;
}
 
int main(void)
{
    double arr1[ARR_SIZE] = {1, 2, 3, 4, 5};
    double arr2[ARR_SIZE] = {6, 7, 2, 9, 10};
    int i;
 
    puts("Массив №1:");
    for(i = 0; i < ARR_SIZE; ++i)
        printf(" %.1f", arr1[i]);
 
    puts("\nМассив №2:");
    for(i = 0; i < ARR_SIZE; ++i)
        printf(" %.1f", arr2[i]);
 
    if( f(arr1, arr2, ARR_SIZE, ARR_SIZE) )
        puts("\nЕсть совпадения!");
    else
        puts("\nСовпадений не обнаружено!");
 
    return 0;
}

Объяснение кода листинга программы

  1. Объявление функции f, которая принимает три аргумента типа double* и два целочисленных аргумента.
  2. Внутри функции объявлены две переменные i и j для циклов.
  3. Выполняются два вложенных цикла, которые сравнивают элементы массивов A и B и возвращают 1, если найдено совпадение, и 0 в противном случае.
  4. В функции main объявлены два массива arr1 и arr2 типа double с пятью элементами каждый.
  5. Выполняется цикл, который выводит элементы массива arr1 на экран.
  6. Выполняется цикл, который выводит элементы массива arr2 на экран.
  7. Вызывается функция f с аргументами arr1, arr2, ARR_SIZE и ARR_SIZE.
  8. В зависимости от результата функции f выводится сообщение об обнаружении или отсутствии совпадений.
  9. Функция main возвращает 0, завершая работу программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5
Похожие ответы