Ein Array stückchenweise mit strings vergleichen



  • Hi!

    Also bitte haut mich nicht gleich ich bin absolut blutiger Anfänger, für Verbesserungsvorschläge immer zu haben 🙂

    Also zum Problem:

    Ich habe ein Teilprogramm geschrieben das bis zu 20 Tastatur Eingaben abfängt und nacheinander in einem Array ( char zahlen[20] ) speichert. Der Sinn ist es dort sowohl Buchstaben als auch Zahlen oder Sonderzeichen eingeben zu können.

    Wenn ich das eingeben der Zahlen ins Array abgeschlossen hab soll er diese Zeichen nacheinander auslesen und die in drei anderen Arrays speichern:
    char buchstaben[20]
    float nummern[20]
    char zeichen[20]
    Also: Alle Nummern aus dem array "zahlen" in float nummern, alle zeichen in char zeichen, und alle buchstaben in char buchstaben.

    Bloss hier komm ich nicht weiter, ich hab schon versucht so eine art string vergleich zu machen, zb. hab ich drei chars (auch als strings probiert) erstellt:
    char buchstabenreihe[] = "abcdefghijklmnopqrstuvwxyz";
    int zahlenreihe[] = "1234567890";
    char zeichenreihe[] = "/()+-*"

    um damit dann einen vergleich durchzuführen, also:

    wenn zahlen[1] in buchstabenreihe vorhanden ist dann kopiere zahlen[1]
    in buchstaben[1]

    wenn zahlen[1] in zahlenreihe vorhanden ist dann kopiere zahlen[1]
    in nummern

    wenn zahlen[1] in zeichenreihe vorhanden ist dann kopiere zahlen[1]
    in zeichen.

    Und das ganze soll dann in ner Schleife ablaufen so dass jedes element aus zahlen[] zugeordnet wird...

    Allerdings hab ich das bisjetzt noch nicht geschafft, ich hab schon mehrere Dinge ausprobiert 😞

    Ich hoffe ihr versteht meine Frage und es währe nett wenn wir jemand helfen mag 😉 🙄 😞 🙂 👍



  • Falls es irgendwie hilft, hier nochma der Code zum Tasteneinlesen (Ich hoffe das verwirrt nicht). Lasst euch an den vielen includes und variabeln nicht stören, vielleicht habt ihr ja auch ne bessere lösung für die tasten einlesung

    #include <iostream>
    #include <string>
    #include <cmath>
    #include <cstdio>
    #include <conio.h>
    using namespace std;
    
    char zahlen[20];
    char braeker;
    int zaehler = 0;
    char nichtsnutz = 'w';
    int looper;
    char temp;
    char buchstaben[20];
    float nummern[20];
    int zuordner[20];
    char zeichen[20];
    
    void formel_eingeben()
    {
    	while(braeker!= nichtsnutz)
    	{
    		if (zaehler == 0)
    		{
    			cout << "Formel eingeben, wenn fertig 'w' drücken"
    				 << endl
    				 << endl;
    		}
    
    		temp = _getch();
    
    		if (temp == nichtsnutz)
    		{
    		break;
    		}
    
    		braeker = temp;
    		zahlen[zaehler] = temp;
    		++zaehler;
    
    		if(zaehler==20)
    		{
    			break;
    		}
    	}
    }
    


  • Hallo,

    mit der ANSI-C-Funktion strchr kann man feststellen lassen, ob ein Zeichen (also dein zahlen[i]) in einer Zeichenkette (also entweder in deinem "abcdefghijklmnopqrstuvwxyz" oder "1234567890" oder "/()+-*") vorhanden ist, damit solltest du doch weiterkommen, oder? (Außerdem bieten sich für den Test auf Zahlen die Funktion isdigit und für den Test auf Kleinbuchstaben die Funktion islower an)

    MfG



  • Die Funktionen isdigit() und isalpha() würden sich da wohl am besten eignen. Einfach deine Eingabe-Arrays zeichenweise durchgehen und mit isdigit() (dann in Zahlen-Array speichern), danach mit isalpha() (dann in das Buchstaben-Array) und wenn keines von beiden zutrifft, dann ins Sonderzeichen-Array.



  • Danke an euch!!! Hat mir sehr viel weiter geholfen!!!!

    cout << "Vielen Dank";
    

    👍


Anmelden zum Antworten