C++
Dana jest tablica liczb naturalnych int a[] składająca się z n elementów. Proszę napisać funkcję
int funkcja2(int a[], int n),
która dla wczytanej tablicy a[] zwraca wartość parametru k (z zakresu od 0 do n-2) takiego, który spełnia następujący warunek:
a[0] + ... + a[k] = a[k + 1] + ... + a[n-1].
Jeśli dla dowolnej wartości k (z podanego zakresu) powyższy warunek nie zachodzi, to funkcja powinna zwracać wartość (-1).
" Life is not a problem to be solved but a reality to be experienced! "
© Copyright 2013 - 2025 KUDO.TIPS - All rights reserved.
Nie wiem czy to najlepsze rozwiązanie, ale wg. mnie najprostsze:
#include <iostream>
using namespace std;
int funkcja2(int a[],int n)
{
long long suma=0,suma2=a[0];
for (int i=1; i<n; i++) suma+=a[i];
if (suma==suma2) return 0; else
for (int i=1; i<n; i++)
{
suma2+=a[i];
suma-=a[i];
if (suma2==suma) return i;
}
return -1;
}
int main()
{
int n;
cout << "Podaj ile elementow bedziesz wprowadzal do tabicy: ";
cin >> n;
int *tab=new int [n];
cout << "Podaj te elementy: ";
for (int i=0; i<n; i++) cin >> tab[i];
cout << "Wynik dzialania funkcji: " << funkcja2(tab,n);
return 0;
}
Trzymamy w jednej zmiennej pierwszy element w tablicy, a w drugiej sume pozostalych elementow tablicy. Teraz po prostu przesuwamy się po tablicy, do pierwszej zmiennej dodając kolejne elementy tablicy, a w drugiej odejmując ;) w momencie gdy pierwsza zmienna rowna sie prawej.. znalezlismy to miejsce :) jak przeleci cala tablice i nie znajdzie miejsca to ma zwrocic -1 :)