Avatar billede jakob_madsen Nybegynder
04. juli 2003 - 10:38 Der er 7 kommentarer og
1 løsning

cannot convert parameter 1 from 'int' to 'int '

Jeg har lavet følgende kode:

#include <stdio.h>
#include <mkl.h>

int main()
{
    double matrix[10][15];
    double res;
    int N, INCX;
    N=1;
    INCX=3;
    for(int i=1;i<=6;i++)
    {
        for (int j=1;j<=5;j++)
        {

        matrix[1][1]=3;
        printf("%6.1f ",matrix[1][1]);
        }
        printf("\n");
    }
    res=dasum(N,matrix,INCX);
    return 0;
}

og får følgende fejl ???
--------------------Configuration: Test2 - Win32 Debug--------------------
Compiling...
test2.cpp
C:\Documents and Settings\jfm\My Documents\Test2\test2.cpp(25) : error C2664: 'dasum' : cannot convert parameter 1 from 'int' to 'int *'
        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.

Test2.exe - 1 error(s), 0 warning(s)

Hvad gør jeg galt
Avatar billede erikjacobsen Ekspert
04. juli 2003 - 10:42 #1
Jeg kender ikke dasum. Men N er en int og hvis den forventer en int * kan du
måske    res=dasum(&N,matrix,INCX);
Avatar billede jakob_madsen Nybegynder
04. juli 2003 - 10:46 #2
Mange tak. Det fungere. (O: Husk at komme med et svar så jeg kan give dig point.
Nu får jeg følgende fejl:

Compiling...
test2.cpp
C:\Documents and Settings\jfm\My Documents\Test2\test2.cpp(22) : error C2664: 'dasum' : cannot convert parameter 2 from 'double [10][15]' to 'double *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.

Test2.exe - 1 error(s), 0 warning(s)
Avatar billede erikjacobsen Ekspert
04. juli 2003 - 10:47 #3
Skal vi så ikke lige se din dasum-funktion? ;)
Avatar billede arne_v Ekspert
04. juli 2003 - 10:50 #4
samme løsning:
  &matrix
Avatar billede jakob_madsen Nybegynder
04. juli 2003 - 10:52 #5
Det fungere nu. Mange tak for hjælpen
Husk at svar.
Avatar billede arne_v Ekspert
04. juli 2003 - 10:55 #6
Jeg formoder at det er en BLAS level 1 dasum som
summerer hver INCX'te element i arrayet matrix med N elementer,

Og fordi det er en Fortran implmentation du bruger skal
både  N og INCX over by reference.

[altså også &INCX]
Avatar billede jakob_madsen Nybegynder
04. juli 2003 - 11:07 #7
jep (O:
Avatar billede soepro Nybegynder
05. august 2003 - 10:55 #8
Din kode ser meget mærkelig ud - du initaliserer matrix'ens 2 kolonne i 2 række (husk i C++ er første indeks i en tabel/array 0 - ikke 1) til 3 ialt 5 * 6 gange - hvordan hænger det sammen med din matrix-størrelse på 10 * 15 elementer ?

Hvis du overfører Matrix som double** (pointer til en to-dimensionelt array, dvs. en matrix), så mangler du noget information for at kunne bevæge dig korrekt rundt i kolonner/rækker - nemlig antallet af kolonner i hver række. Ved indekseringen skal du så bruge følgende formel i stedet for:

*(matrix+<række>*<antal kolonner>+<kolonne>) = ???

for at få det 'kolonne' element i 'række' i matrixen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester