hilfe beim programm



  • ich hab ne aufgabe bekommen ein programm zu schreiben das folgendes machen muss:
    1.es darf nur zahlen zulassen
    2.es muss vorzeichen zulassen aber nur vor der ersten zahl
    3.es muss kommata zulassen aber nach der ersten zahl
    4.backspacefunktion
    5.return
    6.es soll eine parameterübergabe der koordinaten stattfinden
    7. man soll die vor und nachkommastellen bestimmen können
    8.es soll eine rechenvariable übergeben werden(k.a. was das heißen soll)
    9.es soll ein string übergeben werden(auch k.a.)
    10.da es nur eine zeichenkette ist die rauskommt soll die zahl berechnet werden.

    ich bin soweit mit punkt 1 bis 5 fertig fehlt nur noch der rest ich komme aber nicht weiter und bitte um eure hilfe

    hier der quellcode

    #include <stdio.h>
    #include <conio.h>
    #include "conioex.h"
    #include "conioex.c"
    
    void main()
    {char zahl[20];
     int vorz,komma,i,ziff,y,y0,x0/*,zv*/;
     i=0; komma=0; vorz=0;x0=10;y0=10 ; //zv=0;
     do
     {
      do
    	{
    	 ziff=getch();
    	}
      while(!(((ziff>='0' && ziff<='9') && i<3)
    		  ||((ziff=='+' || ziff=='-')&& (i==0))
    		  ||((ziff=='.' || ziff==',')&& (komma==0) && i>vorz)
    		  ||ziff==13
    		  ||ziff==8
    		 )
    	   );
      if(ziff=='.' || ziff==',')
    	{
    	 komma=1;
    	 ziff=',';
    	}
      if(ziff=='+' || ziff=='-')
    	{
    	 vorz=1;
    	}
      if(ziff==8)
    	{
    	 if(zahl[i-1]=='+'||zahl[i-1]=='-')
    		{
    		vorz=0;
    		}
    	 if(zahl[i-1]==',')
    		{
    		 komma=0;
    		}
    	 if(i>0)
    	    i--;
    		gotoxy(x0+i,y0);
    		printf(" ");
    		gotoxy(x0+i,y0);
    
    	}
      else
    	{
    	 zahl[i]=ziff;
    	 gotoxy(x0+i,y0);
    	 printf("%c",ziff);
    	 i++;
      	}
     }
     while (ziff!=13 && i<19);
     i=i-1; // wegen hochzählen am ende schleife
     zahl[i]=0;
     printf("\n");
     for(y=0;y<i;y=y+1)
    	printf("%c",zahl[y]);
    
     getch();
    }
    

    das main soll in eine funktion umgewandelt werden und ein neuse main soll diese funktion benutzen

    danke im voraus



  • zum Quellcode:

    <stdio.h> ist nicht c++-Standard
    conio* afaik auch nicht
    genauso wie void main()

    zu dem Rest: du sollest dich vielleicht mal mit Funktionen beschäftigen...



  • Beliah schrieb:

    zum Quellcode:
    <stdio.h> ist nicht c++-Standard

    Na klar ist das Standard, siehe Annex D.5. Ist zwar veraltet, aber trotzdem aus Kompatibilität enthalten.



  • tip für string nach zahl und umgekehrt: schau ins c++ faq, da steht was dazu.



  • 7H3 N4C3R schrieb:

    Beliah schrieb:

    zum Quellcode:
    <stdio.h> ist nicht c++-Standard

    Na klar ist das Standard, siehe Annex D.5. Ist zwar veraltet, aber trotzdem aus Kompatibilität enthalten.

    Ok, ums klarer auszudrücken:

    <stdio.h> ist nicht aktueller c++-Standard



  • Was ist denn das für eine Aufgabenstellung ?
    Spätestens ab Punkt 6 ist die Aufgabenstellung "etwas" ungenau.
    Need more input.



  • Beliah schrieb:

    Ok, ums klarer auszudrücken:
    <stdio.h> ist nicht aktueller c++-Standard

    Selbstverständlich ist das auch aktueller C++-Standard. Es mag nicht den hausgeschusterten Programmierrichtlinien von Hinz und Kunz entsprechen, falls du das mit "C++-Standard" meinst. Und stdio.h ist nur dafür da, damit auch C-Code durch einen C++-Compiler läuft. Deshalb sollte man es nicht verwenden. Das ändert aber nichts an der Standardkonformität.

    Zum ursprünglichen Post:
    Wo genau kommst du nicht weiter, bzw. was ist das Problem?



  • Was hier gemeint war, stdio.h ist kein aktueller Standard denn es gibt ja cstdio



  • also ich muss ja z.B. die vor und nachkommastellen bestimmen können und dazu soll ich eine variable vork und eine wariable nachk verwenden. mein lehrer hat mir gesagt das das geht indem ich das irgendweie als bedingung in die do while schleife schreibe (da wo schon voll viele bedingungen stehen. dann soll ich noch ein main schreiben und von da sollen die variablen übergeben werden und die sollen verstelbar sein im quellcode. wenn ich die variable nachk auf zwei setze dann soll man nur zwei nachkommastellen eingeben können. das ist der erste punkt wo ich nicht weiterkomme. wie ich das machen soll ist mir ein rätsel



  • kann keiner helfen? ich komm einfach nicht weiter



  • Die einfachste Möglichkeit wäre so etwas:

    double val=3.14;
    
    int vork = (int)val;//3
    double nachk = val-vork;//0.14
    

    Ein anderer Ansatz wäre es, die Variable in einen String zu packen und dort drin nach dem Komma zu suchen:

    double val=3.14;
    
    stringstream conv;
    conv<<val;
    string vork=conv.str().subtr(0,conv.str().find('.'));//"3"
    string nachk=conv.str().substr(conv.str().find('.')+1);//"14"
    

Anmelden zum Antworten