Brauche dringend Hilfe bei dieser Übung!!!



  • Im Folgenden Programm fehlen einige Teile --> diese sind mit **** gekennzeichnet. Die Aufgabe ist, das Programm zu vervollstängigen, sodass es funktioniert. Es soll der Text "Frohe Weihnachten 2009" ausgegeben werden.
    Natürlich könnte man das viel einfacher programmieren, aber das wäre nicht Sinn der Aufgabe. Kann mir jemand helfen?

    #include <stdio.h> 
    #include <string.h> 
    #include <stdlib.h> 
    
    int toggle = 1; 
    char* result; 
    
    int calcYear(int y2) 
    { 
    int y = 0; 
    int i; 
    for(i = 0; i < ****; i++){ 
    int z = 0; 
    while(z<2) 
    z++; 
    
    y+=z; 
    } 
    
    for(i=1; i<****; i++){ 
    y++; 
    
    do{y++;} 
    while (toggle); 
    
    return y +y2; 
    } 
    } 
    
    char* set(char* text){ 
    char t[5]; 
    sprintf(t,"ohreF"); 
    char* org = text; 
    
    text[****] = t[4]; 
    text++; 
    *text = t[2]; 
    text[1] = *t; 
    text = text +(10/2) - ****; 
    *text = t[1]; 
    text[****] = t[3]; 
    
    return org; 
    } 
    
    void writeXMAS(){ 
    sprintf(result + ****, "Weihnachten"); 
    } 
    
    int main(){ 
    result = (char*)malloc(sizeof(char)*30); 
    memset(result,'_',30); 
    
    toggle = ****; 
    set(result); 
    writeXMAS(); 
    sprintf(result+****,"_%d",calcYear(1)); 
    
    result[29] = '\0'; 
    
    printf("%s_\n",result); 
    
    free(result); 
    return 1; 
    getchar(); 
    }
    


  • 1003
    2
    0
    3
    1
    strlen("Frohe ")
    0
    strlen(result)

    könnt schon klappen?



  • #include <stdio.h> 
    #include <string.h> 
    #include <stdlib.h> 
    
    int toggle = 1; 
    char* result; 
    
    int calcYear(int y2){
    	int y = 0; 
    	int i; 
    	for(i = 0; i < 1003; i++){ //1003 * 2 = 2006
    		int z = 0; 
    		while(z<2) 
    			z++; 
    		y+=z; 
    	} 
    
    	for(i=1; i<12345; i++){ //2006
    		y++; //+1
    
    		do{y++;} //+1 
    		while (toggle); //toogle muss 0 sein sonst endlosschleife 
    
    		return y +y2; //+1 = 2009
    	}
    } 
    
    char* set(char* text){
    	char t[5]; 
    	sprintf(t,"ohreF"); 
    	char* org = text; 
    
    	text[0] = t[4]; //>F
    	text++; //F|
    	*text = t[2];  //F>r
    	text[1] = *t;  //F>ro
    	text = text +(10/2) - 3; //Fro>
    	*text = t[1];  //Fro>h
    	text[1] = t[3]; //Fro>he
    
    	return org; 
    } 
    
    void writeXMAS(){ 
    	sprintf(result + 6, "Weihnachten"); //Frohe
    } 
    
    int main(){ 
    	result = (char*)malloc(sizeof(char)*30); 
    	memset(result,'_',30); 
    
    	toggle = 0; 
    	set(result); 
    	writeXMAS(); 
    	sprintf(result+18,"_%d",calcYear(1));  //Frohe_Weihnachten
    
    	result[29] = '\0'; // Frohe_Weihnachten___________\0
    
    	printf("%s_\n",result); 
    
    	free(result); 
    	return 1; 
    	getchar(); 
    }
    

    Gibt "Frohe_Weihnachten_2009_" aus. Gegen die Unterstriche kannst du nichts machen, außer du schummelst und schreibst in den ***** das Programm um.
    Ich habe mich auch bemüht zu kommentieren was da passiert. "F>ro" bedeutet so viel wie "in result ist "Fro" gespeichert (Unterstriche ignoriert) und text zeigt auf das r. Ich hoffe das hilft dir mehr als nur zum Kopieren.



  • Danke für die ausführliche Antwort!
    jetzt versteh ich das Programm


Anmelden zum Antworten