Member 13540309 Ответов: 1

Каково значение 'n' здесь, в этой программе, чтобы найти пару с заданной суммой в массиве


#include <stdio.h>
#include <stdlib.h>

//program to find pair with given sum in the array.
void findPair(int arr[], int n, int sum)
{
    int i,j;
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(arr[i] + arr[j] == sum)
            {
                printf("Pair found at index %d and %d", i,j);
                return;
            }
        }
    }
    printf("Pair not found");
}
int main()
{
    int arr[] = { 8,7,2,5,3,1};
    int sum = 10;

    int n = sizeof(arr)/sizeof(arr[0]);
    findPair(arr, n, sum);
    return 0;
}


Что я уже пробовал:

#include <stdio.h>
#include <stdlib.h>

//program to find pair with given sum in the array.
void findPair(int arr[], int n, int sum)
{
    int i,j;
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(arr[i] + arr[j] == sum)
            {
                printf("Pair found at index %d and %d", i,j);
                return;
            }
        }
    }
    printf("Pair not found");
}
int main()
{
    int arr[] = { 8,7,2,5,3,1};
    int sum = 10;

    int n = sizeof(arr)/sizeof(arr[0]);
    findPair(arr, n, sum);
    return 0;
}

Kenneth Haugland

Почему вы посылаете n в свою функцию? Ваши расчеты тоже кажутся мне странными.

1 Ответов

Рейтинг:
0

OriginalGriff

Это количество элементов в вашем массиве:

int arr[] = { 8,7,2,5,3,1};
... 
int n = sizeof(arr)/sizeof(arr[0]);

sizeof(arr) - это общее количество байтов в массиве, sizeof(arr[0]) - это размер в байтах первого элемента массива, поэтому n-это байты в массиве / байты в каждом элементе == элементы в массиве.


CPallini

5.