Invalid Conversion from int to int*



  • #include "iostream"
    #include "cstdlib"
    #include "math.h"
    
    using namespace std;
    int eingabe;
    int a[10^1000] ={1} ;
    int b[10^1000] ={1} ;
    int c[10^1000] ={1} ; 
    int d[10^1000] ={0} ; 
    int i;
    int hilf;
    int s;
    int zehner;
    int einer;
    int ueberschuss;
    
    int multiplizieren(int a[10^1000],int y);
    int main()
    {
        cout << "fakultät von";
        cin  >> eingabe;
        for (i=0;i<eingabe;i++)    
        {
            multiplizieren(a[10^1000],i%10);
            multiplizieren(b[10^1000],i%100-i%10);
            multiplizieren(c[10^1000]%1000-i%100-i%10);
        }    
    
    }           
    int multipliezieren(int a[10^1000],int y)
    { 
    for(s=0;s <= 10^1000;s++)
    {
          ueberschuss=0;
          hilf=a[s]*y+ueberschuss;
          einer = 10%hilf;
          zehner = (hilf-10%hilf);
          a[s]=einer;
          ueberschuss=zehner;
          a++;
    
    }
    
    }
    

    Beim Kombilieren erscheint oben genannte Fehlermeldung 😞
    Die Fehlermeldung hatte mir der Funktion multipliezieren zu tun.
    Man kann doch Arrays als parameter übergeben und man kann dann auch diese Arrays in der funktion verändern.

    PS:Das Programm ist noch nicht fertig aber großteils.(Es soll zum berechnen größerer Fakultäten werden)



  • Mit ^ kannst du keinen Exponenten angeben, wie du wohl denkst. Das ist der bitweise XOR-Operator!

    Du übergibst bei deinen Funktionsaufrufen auch keine Arrays, sondern einzelne Elemente, also ints. Das ist sicher nicht, was du willst. Außerdem stimmt dein Prototyp nicht mit der Definition überein (Tippfehler!)...



    1. 10^1000 == 994
    2. a[10^1000] ist der 995. Integer in a, und nicht das ganze Array (der 995. weil der erste hat Index 0)
    3. 994 ist schon kein gültiger Index mehr, das Array ist ja bloss 994 Elemente gross
    4. 10 "hoch" 1000 soll hoffentlich ein Scherz sein
    5. Man kann keine Arrays als Parameter übergeben, man kann nur Zeiger auf diese Arrays als Parameter übergeben. Lediglich die Schreibweise sieht so aus als würde man das ganze Array übergeben, weswegen ich diese Schreibweise auch ablehne und nie selbst verwende.

    Lernen, lernen, popernen, hier fehlts wiedermal an den grundlegenden Grundlagen.



  • hustbaer schrieb:

    1. 10 "hoch" 1000 soll hoffentlich ein Scherz sein

    Warum? wenn man ein Programm schreiben will das die fakultät von 1000 ausgeben soll ist die Anzahl der Stellen noch zu niedrieg(100 fakultät ist c. 10^157)

    Ich schreibe mein Programm mal um vieleicht schafft man ja diese Anzahl mit mehrdemensionalen arrays zu erzeugen.



  • Statische Arrays landen auf dem Stack, und der ist arg begrenzt, was Speicherplatz angeht. Aber egal, befasse dich lieber erst mal mit den genannten Kritikpunkten und schreibe ein Programm, das kleinere Fakultäten berechnet. Darauf kannst du ja dann aufbauen.



  • sikun13 schrieb:

    hustbaer schrieb:

    1. 10 "hoch" 1000 soll hoffentlich ein Scherz sein

    Warum? wenn man ein Programm schreiben will das die fakultät von 1000 ausgeben soll ist die Anzahl der Stellen noch zu niedrieg(100 fakultät ist c. 10^157)

    Ich schreibe mein Programm mal um vieleicht schafft man ja diese Anzahl mit mehrdemensionalen arrays zu erzeugen.

    int a[N] heisst "mach mir ein Array das N Integers gross ist".
    int a[10-hoch-1000] heisst demnach "mach mir ein Array für das im gesamten Universum nicht genügend Speicherkapazität vorhanden ist"
    🙄



  • Für eine Zahl der Größenordnung 10157 reichen auch in String-Darstellung 158 Zeichen - diese Zahl hat 157 Stellen, nicht 10157. Natürlich würde eine Big-Integer-Bibliothek eine binäre Darstellung benutzen, die einfacher handzuhaben und kompakter ist, dann kommt man da mit 65 Byte aus. In der Praxis hieße das je nach Architektur realistischerweise 68 bzw. 72 Byte (32- und 64-bit-Architektur respektive).

    Übrigens hat die Fakultät von 1000 gerade mal 2567 Dezimalstellen.


Anmelden zum Antworten