C++ Lernversuche benötige hilfe



  • Hallo Forum ich habe mich an C++ gewagt und habe bei einer Übungsaufgabe ein kleines Problem. Ich habe einen Rechner programmiert der nun mit Hilfe einer Funktion eine Bereichsüberschreitung eines short int verhindern soll. Was ich allerdings nicht hin kriege ist folgendes :

    Ich muss mein Resultat in ein char array packen und dieses an die funktion senden jedoch schickt es mir bisher immer nur die erste zahl, also von z.b. 981 die 9, an die Funktion.

    Kann mir da vielleicht jemand helfen?


  • Mod

    Patorikuu schrieb:

    Ich muss mein Resultat in ein char array packen und dieses an die funktion senden

    Warum?

    jedoch schickt es mir bisher immer nur die erste zahl, also von z.b. 981 die 9, an die Funktion.

    Dann hast du wohl etwas falsch gemacht.

    Kann mir da vielleicht jemand helfen?

    Nur, wenn du Code zeigst. Und am besten noch genau beschreibst, was du warum wie erreichen willst und was stattdessen passiert.



  • danke für die schnelle Antwort sende natürlich sofort alle fehlenden Infos kenne mich noch nicht so aus was gebraucht wird sorry.

    meine funktion sieht so aus

    short int check(char *s)
    {
    	short int i = 0;
    	short int len;
    
    	printf("yo%s", s);
    	if((s[i] == '+') || (s[i] == '-')) i++;
    	for(len = i; s[len] != 0; len++) {}
    	if(len - i > 5) return 0;
    
    	if(s[i+0]<'3') return 1;
    	if(s[i+0]>'3') return 0;
    	if(s[i+1]<'2') return 1;
    	if(s[i+1]<'2') return 0;
    	if(s[i+2]<'7') return 1;
    	if(s[i+2]<'7') return 0;
    	if(s[i+3]<'6') return 1;
    	if(s[i+3]<'6') return 0;
    	if(s[i+4]<'7') return 0;
    
    	return 1;
    }
    

    und in der main der teil mit der funktion bisher so

    short int überprüfung = 0;
    	short int var1; //Variable 1
    	short int var2; //Variable 2
    	short int resultat; //Resultat
    	unsigned char operation; //Operator
    	char wiederholen;		//Programm - Wiederholung
    	char weiterrechnen; //Mit dem Resultat weiterrechnen
    	char buffer[100];
    
    	do{
    		//Einlesen der Beiden Variablen
    		printf("1. Variable eingeben: ");
    		scanf_s("%hd", &var1);
    		fflush(stdin); 	//Tastaturbuffer leeren
    
    		//solange mit dem Resultat weitergerechnet werden soll
    		do
    		{
    
    			sprintf(buffer, "%d", var1);
    			überprüfung = check(buffer);
    			if(überprüfung == 1)
    			{
    				printf("2. Variable eingeben: ");
    				scanf_s("%hd", &var2);
    				fflush(stdin); 	//Tastaturbuffer leeren
    
    				//Einlesen des Operators
    				printf("Operator eingeben: ");
    				scanf_s("%c", &operation, 1);
    				fflush(stdin); //Tastaturbuffer leeren
    

    das mit dem char array weil ich nicht weiss wie es mit dieser ausgangslage sonst funktionieren sollte.



  • if(s[i+2]<'7') return 1;
    if(s[i+2]<'7') return 0;
    if(s[i+3]<'6') return 1;
    if(s[i+3]<'6') return 0;
    

    Ja, was soll man dazu sagen?
    "Wohl nicht ganz zu Ende gedacht" wäre noch eine meiner höflicheren Antworten.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (alle ISO-Standards) in das Forum C (alle ISO-Standards) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • das die Funktion nicht stimmt weiss ich das ist aber eine spätere Aufgabe wie gesagt ist es ne Übung.


  • Mod

    Geh mal im Kopf durch: Angenommen s[i] = '4', s[i+1] = '5', s[i+2] = '6', s[i+3] = '7', s[i+4] = '8'. Was gibt deine Funktion zurück? Ist das wirklich, was du möchtest?

    PS: Und falls du es nicht bemerkt hast: Ich habe deinen Thread ins C-Forum verschoben, denn du machst da C, kein C++. Falls dir das jemand als C++ verkaufen wollte: Hau ihn! Wenn du in Wirklichkeit C++ machen wolltest: Brich mit C ab und lern C++!



  • mein Problem ist jetzt aber erstmal die Übergabe der zahl die Funktion zu korrigieren kommt erst später. oder ist es so das es mit der Funktion wie sie jetzt ist gar nicht möglich ist die korrekte zahl als char zu übergeben?


  • Mod

    Wie kommst du denn zu der Annahme, dass das nicht funktioniert? Wenn ich mal ein compilierbares, minimales Beispiel zu deinem Problem erstelle:

    #include <stdio.h>
    
    short int check(char *s)
    {
      printf("yo%s", s);
      return 1;
    }
    
    int main()
    {
      short int var1; //Variable 1
      char buffer[100];
      scanf("%hd", &var1);
      sprintf(buffer, "%d", var1);
      check(buffer); 
      return 0;
    }
    

    Dann funktioniert das ganz so, wie ich erwarten würde. Erwartest du etwas anderes? Macht dein vollständiges Programm etwas anderes? Ich wiederhole noch einmal:

    SeppJ schrieb:

    Patorikuu schrieb:

    Kann mir da vielleicht jemand helfen?

    Nur, wenn du Code zeigst. Und am besten noch genau beschreibst, was du warum wie erreichen willst und was stattdessen passiert.

    Der obige Link sollte dir ebenfalls helfen, wie du ein Beispiel nachvollziehbar machen kannst.



  • Patorikuu schrieb:

    das die Funktion nicht stimmt weiss ich das ist aber eine spätere Aufgabe wie gesagt ist es ne Übung.

    Nur weil es eine Übung ist bedeutet ja nicht, daß man den Kern falsch programmieren darf.
    Umgekehrt wird ein Schuh draus.


Anmelden zum Antworten