potenzrechnen



  • Hi Leute bin neu hier!

    hab da ein problem und zwar wieso kann mein progremm nur gerede zahlen richtig potenzieren und bei ungeraden ist das ergebnis um 1 zu wenig:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>

    int main(int argc, char *argv[])
    {
    int a, b, ergebnis=0;

    printf("Gib eine Zahl ein:");
    scanf("%d", &a);
    printf("Gib eine ganze Zahl ein:");
    scanf("%d", &b);

    ergebnis= pow (a,b);
    printf("Das Ergebnis von a^b ist: %d\n", ergebnis);

    system("PAUSE");
    return EXIT_SUCCESS;
    }

    danke schon im vorhinein für eure hilfe!!!! 🙂



  • Weil du ergebnis als Integer (Ganzzahl) definiert hast.
    Ausserdem solltest du die C++-Tags benutzen, damit dein Code auch so hübsch aussieht:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main(void){
    	int bas,exp;
    	float ergebnis;
    	printf("Basis: ");
    	scanf("%d",&bas); fflush(stdin);
    	printf("Exponent:");
    	scanf("%d",&exp); fflush(stdin);
    	ergebnis=pow(bas,exp);
    	printf("%d^%d: %.0f\n",bas,exp,ergebnis);
    	getchar();
    	return EXIT_SUCCESS;
    }
    


  • achsooo soetwas in etwa dachte ich schon ... da ich in der math.h double gelesen habe , habe ich jedoch auf der falschen seite gesucht und gemeint ich muss exponent und basis auch als double darstellen... :p

    danke für die flinke antwort!! 👍

    und mit c++ tags meinst du ich sollte das im forum so darstellen wie du in dem kästchen schätze ich mal...(werd ich das nächst mal machen..) 🕶

    nur noch ne frage dazu:
    was macht der befehl fflush(stdin)??? 😕 (return abfangen?)



  • Ja fflush(stdin) löscht den Zeilenumbruch. Du solltest aber getchar() verwenden, wenn du's etwas "konformer" machen willst als ich.
    Ausserdem kann es ja durchaus sein, dass vor dem Umbruch noch weitere Zeichen vorhanden sind.-Deshalb, mach es halt vielleicht irgendwie so:

    void myfflush(void){
    	while(getchar()!='\n');
    }
    


  • oh genial endlich ein forum wo ich mit meinen kranken fragen hin kann da sich sonst niemand den ich kenn für c interessiert! hihi

    hab nämlich noch eine frage wo ich nicht glaube, dass sie mir wer so auf die schnelle rein presst...

    und zwar habe ich einen stacktest(array) gemacht.
    weiss aber, dass man das auch in eine include reintun kann (stack.h)<--beschreibt angeblich was sie kann.
    hab soetwas noch nie gemacht....ausserdem sagte mir wer was von der (stack.c)<--beschreibt angeblich was sie tut.

    mein programm sieht so aus:

    #include <cstdlib>
    #include <iostream>
    #include <time.h>
    
    using namespace std;
    // definition Stackarray
    float stack[10];
    int stackpos=0;
    //Funktion für pusch
    void push (float x)
    {
         //abfangen von überladung und else übergang in normal
         if (stackpos>9)
          {
             printf("Fehler Stack ist voll!!!!!\n" );
             stackpos=10;       
          }
         else
          {
             stack[stackpos]=x;   
             stackpos++;
          }
    
    }
    //Funktion für pop
    float pop() 
    {     
          //stackpos muss allein stehn um öfteres unterschreiten zu registrieren
          stackpos--;
          //abfangen von unterschreiten und else übergang in normal
          if (stackpos<0)
           { 
              printf("Fehler Stack ist leer!!!!!\n");
              stackpos=0;
              return 0;
           }
          else
           {        
              return stack[stackpos];
           }
    
    }     
    
    int main(int argc, char *argv[])
    {
             .
             .// (über) füllen und (unter) leeren
             .
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    die stack.h hätte ich mir so vorgestell nur fehlt was und ich komme hald nicht weiter:

    #ifndef STACK_H
    #define STACK_H
    
    /* Hier sollte noch was kommen */
    
    /* Liefert  einen neuen Stack. */
    extern newStack();
    
    /* Legt den Wert  auf den Stack. */
    extern void push(int x);
    
    extern int pop();
    
    #endif
    


  • Und wie lautet die Frage?



  • falls aus meinem text nicht ersichtlich..

    1.frage stimmt die stack,h die ich mir da zusammen gebastelt hab? wenn nein was fehlt?

    2.frage was ist die stack.c die ich nochdazu brauche...(die ja eigentlich die funktionen meines 1.programms von push und pop übernimmt.

    wie werden die verbunden h und c so das ich sie dann nur noch mit #include "stack.h" aufrufe...
    da ich das ganze ja öfters noch brauchen kann wie zb bei einem upn-rechner..


Anmelden zum Antworten