eMatematikas Prisijunk Forumas Užduotys Testai Pradžia

Klaida su funkcija( VBE 2011m. 2uzd. uzduotis )


Problema turiu pačios funkcijos parametrais:

...
void Suma(int suma[], int B[], int n, int k);
...
int main()
{
...
A[i].Balai = Suma(A[i].Balart, A[i].art, n, k);  // Problema
}
...
void Suma(int suma[], int B[], int n, int k)
{
    for(int i = 0; i < n; i++)
    {
        for(int y = 0; y < k; y++)
        {
            suma[i] += B[i];
        }
    }
}


Gaunu errorą, jog konvertavimas iš int į int* negalimas. Realiai nesuprantu, kodėl su šiais parametrais funkcija neveikia. Pilnas programos kodas antrame poste.

#include <iostream>
#include <fstream>
using namespace std;

const char FV[] = "U2.txt";
const char FR[] = "U2rez.txt";

const int Cn = 100;
const int Ck = 10;
const int Cilgis = 20;
struct Duomenys
{
    string pora;
    int art[Ck];
    int tech[Ck];
    int Balart = 0; int Baltech = 0;
    int Balai;
};

void skaityti(const char FV[], Duomenys A[], int & n, int & k);
void skaiciavimas(Duomenys A[], int n, int & k);
void salinti(int Salinimui[], int & n, int kuris);
void Suma(int suma[], int B[], int n, int k); // Problema

int main()
{
    int n, k;
    Duomenys A[Ck];
    skaityti(FV, A, n, k);
    skaiciavimas(A, n, k);
    for(int i = 0; i < n; i++)
    {
        A[i].Balai = Suma(A[i].Balart, A[i].art, n, k); // Problema
        cout << A[i].Balai << endl;
    }
    return 0;
}

void skaityti(const char FV[], Duomenys A[], int & n, int & k)
{
    char Pav[Cilgis + 1]; int i = 0;
    ifstream fd(FV);
    fd >> n >> k; fd.ignore();
    while(!fd.fail())
    {
        fd.get(Pav, Cilgis);
        A[i].pora = Pav;fd.ignore();
        for(int y = 0; y < k; y++)
        {
            fd >> A[i].art[y];
        }
        fd.ignore();
        for(int y = 0; y < k; y++)
        {
            fd >> A[i].tech[y];
        }
        fd.ignore();
        if(!fd.fail()){i++;}
    }
    n = i;
    fd.close();
}

void skaiciavimas(Duomenys A[], int n, int & k)
{
    int kuris = 0, kuris1 = 0;
    int b = k;
    for(int i = 0; i  < n; i++)
    {
        for(int y = 0; y < k; y++)
        {
            if(A[i].art[y] > A[i].art[kuris]) // Ieskoma didziausios reiksmes vieta
            {
                kuris = y;
            }
            if(A[i].art[y] < A[i].art[kuris1]) // Ieskoma maziausios reiksmes vieta
            {
                kuris1 = y;
            }
        }
        salinti(A[i].art, k, kuris); salinti(A[i].art, k, kuris1);
        kuris = 0, kuris1 = 0, k = b;
        for(int y = 0; y < k; y++)
        {
            if(A[i].tech[y] > A[i].art[kuris]) // Ieskoma didziausios reiksmes vieta
            {
                kuris = y;
            }
            if(A[i].tech[y] < A[i].art[kuris1]) // Ieskoma maziausios reiksmes vieta
            {
                kuris1 = y;
            }
        }
        salinti(A[i].tech, k, kuris); salinti(A[i].tech, k, kuris1);
    }
}
void salinti(int Salinimui[], int & n, int kuris)
{
    for(int i = kuris; i < n - 1;i++){
        Salinimui[i] = Salinimui[i+1];
        }
        n--;
}
void Suma(int suma[], int B[], int n, int k) // Problema
{
    for(int i = 0; i < n; i++)
    {
        for(int y = 0; y < k; y++)
        {
            suma[i] += B[i];
        }
    }
}

Funkcija Suma laukia parametrų kurių tipai yra: int[], int[], int ir int. Šioje eilutėje:
A[i].Balai = Suma(A[i].Balart, A[i].art, n, k);
Tu perduodi parametrus kurie yra: int, int[], int ir int.
Taigi, problema yra su pirmuoju parametru.

Nori sudalyvauti šioje temoje ir parašyti savo pranešimą? Prisijungti »