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.
andriusvv8 (+36)
#include <iostream> #include <fstream> using namespace std;
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]; } } }
valdas3 (+1276)
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.