Массив, функия и 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; }
Объяснение кода листинга программы
- Объявление функции
f
, которая принимает три аргумента типаdouble*
и два целочисленных аргумента. - Внутри функции объявлены две переменные
i
иj
для циклов. - Выполняются два вложенных цикла, которые сравнивают элементы массивов
A
иB
и возвращают1
, если найдено совпадение, и0
в противном случае. - В функции
main
объявлены два массиваarr1
иarr2
типаdouble
с пятью элементами каждый. - Выполняется цикл, который выводит элементы массива
arr1
на экран. - Выполняется цикл, который выводит элементы массива
arr2
на экран. - Вызывается функция
f
с аргументамиarr1
,arr2
,ARR_SIZE
иARR_SIZE
. - В зависимости от результата функции
f
выводится сообщение об обнаружении или отсутствии совпадений. - Функция
main
возвращает0
, завершая работу программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д