Forum
Tipps
News
Menu-Icon

exit(x);

Hallo, ich bin es mal wieder.

Ich habe mal eine Frage zu exit() bzw. return.
Was genau hab ich davon? Wie verwende ich nun den Rückgabewert eines Programms?


Gruß
Andre


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "grech.c"

int main(int argc, char *argv[]){
   
    char test[argc][100];
 
    double x[argc],z=0;
    int y=0;
    int i,j;
   
    for(i=0;i<argc;i++){
    strcpy(test[i],argv[i]);
    printf("%s ",test[i]);
    }

   
    if(argc<4){
               printf("\nAufruf: %s Zahl_1 op Zahl_2 op Zahl_n",argv[0]);
               exit(1);
               }
   
    //Zahlen umwandeln mit atof()-Funktion
    for(y=1;y<=argc;y+=2)
    {
    x[y]=atof(test[y]);
    //Wenn Operand vor der Zahl ein Minus ist, wird die Zahl negiert.
    if(test[y-1][0]=='-')
    x[y]=x[y]-(2*x[y]);
    }
   
   
    for(y=2;y<=argc;y+=2)
    {
    if(test[y][0]=='/'){
          if(x[y+1]==0){
               printf("Es darf nicht durch 0 geteilt werden!");
               exit(2);
               }
          z=x[y-1]/x[y+1];
          x[y-1]=0;
          x[y+1]=z;
          test[y][0]='+';
          printf("z=%f x[y+1]=%f\n",z,x[y+1]);
          }
    if(test[y][0]=='x'){
          z=x[y-1]*x[y+1];
          x[y-1]=0;
          x[y+1]=z;
          test[y][0]='+';
          printf("z=%f x[y+1]=%f\n",z,x[y+1]);         
          }
         
    }
   
   
    z=0;
    for(y=1;y<=argc;y+=2)
    z=z+x[y];
   
    printf("\nRechnung: ");
    for(i=1;i<argc;i++){
     printf("%s",argv[i]);
     }
    printf("\nErgebnis: %f\n",z);
   
    system("pause");
    return 0;   

     
    }

Antworten zu exit(x);:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Den kannst du verwenden, wenn du in deinem Programm ein anderes aufrufst. Also ungefähr

int x = system( "someOtherProgram.exe" );
Da kannst du dann anhand der returncodes auswerten, ob z.B. das Programm erfolgreich ausgeführt wurde.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

achso...

Wo ich schon dabei bin... ;D


Am Ende sollen alle Zahlen ja addiert werden. Das funktioniert auch bis zur vorletzten Zahl. Die letzte ist immer 0. ???
Der Fehler liegt anscheinend in der for-Schleife in der zwischen Multiplikation und Division unterschieden wird.
Wenn ich diese auskommentiere funktioniert es.

Der Compiler hat jetzt ab und zu mal gemeckert.
irgednwas denied
ld exitstatus 1

Ich kann den Fehler aber nicht reproduzieren....ich probiers mal..

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

int main(int argc, char *argv[]){
   
    char test[argc][100];
 
    double x[argc],z=0;
    int y=0;
    int i,j;
   
    for(i=0;i<argc;i++){
    strcpy(test[i],argv[i]);
    printf("%s ",test[i]);
    }

   
    if(argc<4){
               printf("\nAufruf: %s Zahl_1 op Zahl_2 op Zahl_n",argv[0]);
               printf("\n\nOP:\n\t+\taddiern\n");
               printf("\t-\tsubtrahieren\n");
               printf("\tx\tmultiplizieren\n");
               printf("\t/\tdividieren\n");
               exit(1);
               }
   
    //Zahlen umwandeln mit atof()-Funktion
    for(y=1;y<=argc;y+=2)
    {
    x[y]=atof(test[y]);
    //Wenn Operand vor der Zahl ein Minus ist, wird die Zahl negiert.
    if(test[y-1][0]=='-')
    x[y]=x[y]-(2*x[y]);
    }

   
    for(y=2;y<=argc;y+=2)
    {
    if(test[y][0]=='/'){
          if(x[y+1]==0){
               printf("Es darf nicht durch 0 geteilt werden!");
               exit(2);
               }   
          z=x[y-1]/x[y+1];
          x[y-1]=0;
          x[y+1]=z;
          test[y][0]='+';
          }
    if(test[y][0]=='x'){
          z=x[y-1]*x[y+1];
          x[y-1]=0;
          x[y+1]=z;
          test[y][0]='+';
          }
//    if(test[y][0]==':'){
//          z=pow(x[y-1],x[y+1]);
//          x[y-1]=0;
//          x[y+1]=z;
//          test[y][0]='+';
//          }   
    }
   
    printf("\n");
    for(y=1;y<=argc;y+=2)
    printf("%f\n",x[y]);
   
   
   
   
    z=0;
    for(y=1;y<=argc;y+=2)
    z=z+x[y];
   
    printf("\nRechnung: ");
    for(i=1;i<argc;i++){
     printf("%s",argv[i]);
     }
    printf("\nErgebnis: %f\n",z);
   
    system("pause");
    return 0;     

     
    }

« Letzte Änderung: 12.11.08, 09:34:38 von Andre S. »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hmm, mit was für Eingaben hast du es denn ausprobiert? Bei mir funktioniert das ganz gut...
 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ich hatte es mit 9 + 9 + 9 + 9 ausprobiert.

Aber bei mir geht es komischerweise auch.
Hab den Quellcode in eine neue Datei kopiert und diese dann kompiliert. Und schon ging es wieder.... ???


« Java GrafikProgrammierbuch für Python »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

| Mehr Themen zu "exitx"
Fremdwörter? Erklärungen im Lexikon!
Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...

Unicode
Unicode ist ein international anerkannter Standard, der als universeller Zeichencode ("Universal Code") dient und durch das Unicode-Konsortium entwickelt und verwaltet wi...

QR-Code
QR-Codes, die Abkürzung für "Quick Response Codes", sind eine Form von zweidimensionalen Barcodes. Damit lassen sich Informationen schnell und effizient speiche...