suche Loesung fuer Schleife



  • int i;
    
    	i = strcmp(name, woche[1]);
    
    	if (i == 0)
    	{
    		printf("Der %i Tag in der Woche ist %s\n", 1, woche[1]);
    	}
    	else
    	{
    		i = strcmp(name, woche[2]);
    
    		if (i == 0)
    		{
    			printf("Der %i Tag in der Woche ist %s\n", 2, woche[2]);
    		}
    		else {
    			i = strcmp(name, woche[3]);
    			if (i == 0)
    			{
    				printf("Der %i Tag in der Woche ist %s\n", 3, woche[3]);
    			}
    			else {
    				i = strcmp(name, woche[4]);
    				if (i == 0)
    				{
    					printf("Der %i Tag in der Woche ist %s\n", 4, woche[4]);
    
    				}
    				else
    				{
    					i = strcmp(name, woche[5]);
    					if (i == 0)
    					{
    						printf("Der %i Tag in der Woche ist %s\n", 5, woche[5]);
    
    					}
    					else {
    						i = strcmp(name, woche[6]);
    						if (i == 0)
    						{
    							printf("Der %i Tag in der Woche ist %s\n", 6, woche[6]);
    
    						}
    						else {
    							i = strcmp(name, woche[7]);
    							if (i == 0)
    							{
    								printf("Der %i Tag in der Woche ist %s\n", 7, woche[7]);
    
    							}
    							else
    							{
    								printf("Der %i Tag in der Wochexxxx ist %s\n", 0, woche[0]);
    							}
    						}
    					}
    				}
    			}
    		}
    	}
    

    wie kann ich als Schleife schreiben?



  • Indem du die Laufvariable der Schleife als Index für das Array woche benutzt.

    (Aber das ist C und kein C++)



  • Laufvariable mit if!

    Beispiel ?

    Ich komme wirklich nicht drauf



  • Stichwort for-schleife. Rest sollte dir Google liefern.



  • m180 schrieb:

    Laufvariable mit if!

    Die if-Anweisung ist keine Schleife!

    for(int i=1;i<=7;i++)
      printf("Der %d Tag in der Woche ist %s\n", i, woche[i]);
    


  • aber ich muss doch "if"

    char woche[8][20] = {"Fehler", "Montag", usw...

    wegen "strcmp(name, woche[x])"

    {
    printf("%i----- %s",x ,woche[x])

    }

    Lösung bitte



  • Dann schreib halt die if anweißung in die for-Schleife.

    PS: du scheinst mir sehr überfordert mit den Anfängen in C++ zu sein. Welche Informationsquelle nutzt du denn?



  • m180 schrieb:

    aber ich muss doch "if"

    Ja klar brauchst du das.

    m180 schrieb:

    char woche[8][20] = {"Fehler", "Montag", usw...

    {
    printf("%i----- %s",x ,woche[x])

    }

    Dann wäre die Laufvariable der Schleife halt x (und nicht i)

    m180 schrieb:

    Lösung bitte

    Nö.
    Wir machen keine Hausaufgaben.



  • int x;
    	for(x=0; x<8; x++)
    		if (strcmp(name, woche[x]) != 0)
    		{
    			puts("Fehler");
    		}
    		else {
    
    				printf("Der %i Tag in der Woche ist %s\n", x, woche[x]);
    
    		}
    

    Fehler
    Der 1 Tag in der Woche ist Montag
    Fehler
    Fehler
    Fehler
    Fehler
    usw..

    ich will nur das "Der 1 Tag in der Woche ist Montag" haben

    ich kriege nicht hin



  • int x;
        for(x=0; x<8; x++)
            if (strcmp(name, woche[x]) != 0)
            {
               // puts("Fehler");
            }
            else {
    
                    printf("Der %i Tag in der Woche ist %s\n", x, woche[x]);
    
            }
    


  • Kennst du break ?

    Wenn nicht, dann merk dir in einer zweiten Variablen den Index.

    int x, tag = 0;
        for(x=0; x<8; x++)
            if (strcmp(name, woche[x]) != 0)
            {
               // puts("Fehler");
            }
            else {
                    printf("Der %i Tag in der Woche ist %s\n", x, woche[x]);
                    tag = x;
            }
    
        printf("Der %i Tag in der Woche ist %s\n", tag , woche[tag]);
    


  • int x, tag = 0;
    	for (x = 0; x<8; x++)
    		if (strcmp(name, woche[x]) != 0)
    		{
    			// puts("Fehler"); 
    		}
    		else {
    			//printf("Der %i Tag in der Woche ist %s\n", x, woche[x]);
    			tag = x;
    		}
    
    		printf("Der %i Tag in der Woche ist %s\n", tag, woche[tag]);
    

    danke DirkB. So will ich es haben



  • gibts noch anderen Varianten?

    bzw. wie schreibt man richtig.



  • 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.



  • m180 schrieb:

    gibts noch anderen Varianten?

    bzw. wie schreibt man richtig.

    Mit break
    Du musst noch aufpassen, was passiert, wenn der Tag nicht gefunden wurde (welchen Wert hat x)



  • ok, ich probiere aus mit "break"

    hab jetzt so umgeschrieben

    int x, tag = 0;
    	for (x = 0; x<8; x++)
    		if (strcmp(name, woche[x]) == 0)
    		{
    			tag = x;
    		}
    
    		printf("Der %i Tag in der Woche ist %s\n", tag, woche[tag]);
    


  • Header.cpp

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include"Header.h"
    
    char woche[8][20] = { "Fehler", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag" };
    
    void PrintTagString(char name[])
    {
    
    	int x, tag = 0;
    	for (x = 0; x<8; x++)
    		if (strcmp(name, woche[x]) == 0)
    		{
    			tag = x;
    		}
    
    		printf("Der %i Tag in der Woche ist %s\n", tag, woche[tag]);
    
    }
    
    void PrintTagZahl(char *a)
    {
    	int x;
    	x = atoi(a);
    
    	if ((x > 7) || (x < 0))
    	{
    		printf("Der %i Tag in der Woche ist Fehler\n", x);
    
    	}
    	else
    
    	{
    
    		printf("Der %i Tag in der Woche ist %s\n", x, woche[x]);
    	}
    
    }
    

    Quelle.cpp

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include"Header.h"
    
    void main(int argc, char *argv[])
    {
    	int x;
    	if (argc == 2)
    	{
    
    		x = atoi(argv[1]);
    
    		if (x == 0)
    		{
    			PrintTagString(argv[1]);
    		}
    		else
    		{
    			PrintTagZahl(argv[1]);
    
    		}
    
    	}
    	else
    	{
    		puts("Parameter-Fehler");
    	}
    }
    

    Header.h

    void PrintTagZahl(char *a);
    void PrintTagString(char name[]);
    


  • PrintTagZahl sollte doch auch als Parameter eine Ganzzahl bekommen und keinen String.


Anmelden zum Antworten