Seite 1 von 1

Funktionen? Header?

Verfasst: Do Mär 24, 2011 3:27 pm
von xSpawn
Hey Com,

ich bin ein ziemlich neuer C Programmierer (ca. 1 Jahr aber nie wirklich etwas richtiges Programmiert) und hab jetzt mal versucht was "anständiges" zu programmieren. Es ist ein Frage u. Antwort Spiel, bei dem am Ende angezeigt wird wie viel Fragen man richtig hat und wie viele nicht. Die Prozent sollen auch angezeigt werden. Ich hab das alles auch schon fertig, aber ich will den Source Code irgendwie shorten.
Also. Das eigentliche Problem liegt darin, dass ich nach jeder Frage ne Abfrage zur Antwort durchführen muss. Dies sieht etwa so aus:

Code: Alles auswählen

	scanf("%d", &antwort);

  	if (antwort==1)

	  {
	    richAntw++;
	  }

	else if (antwort==2)

	  {
	    falsAntw++;
	  }
Ich will das irgendwie in eine Funktion packen, aber leider weiß ich nicht wie. Ich hab schon eine Header Datei gemacht mit der es funktionieren würde, allerdings finde ich das ein wenig umständlich. Ich würde es auch super finden, wenn ich andere Vorschläge für das shorten des Source Code habt, ich denke das ist was einen guten Programmierer ausmacht: Übersichtliche und nicht umständliche Codes. Weiß hier wer Rat? Ich wäre echt dankbar.

Hier noch der ganze Code:

Code: Alles auswählen

#include <stdio.h>
#include <close.h>

int main()

{

  int progStart, antwort;
  int richAntw = 0, falsAntw = 0;

  printf("\n\n Das Fragen und Antwort Spiel \n\n");
  printf("Drücken sie \n<1> zum Starten \n<2> zum Beenden des Programms\n");

  scanf("%d", &progStart);

  switch(progStart)

{

  case 1: 

	printf("\nDas Programm startet jetzt.\n");
	printf("\n1. Frage: Ist Brüno cool?\nAntworten:<1> Ja    <2> Nein\n\n");
	scanf("%d", &antwort);

  	if (antwort==1)

	  {
	    richAntw++;
	  }

	else if (antwort==2)

	  {
	    falsAntw++;
	  }

	printf("\n2. Frage: Ist Lutz Brüno's Assistent?\nAntworten:<1> Ja    <2> Nein\n\n");
	scanf("%d", &antwort);
  
	if (antwort==1)

	  {
	    richAntw++;
	  }

	else if (antwort==2)

	  {
	    falsAntw++;
	  }


  	float prozent = richAntw * 100 / 2; /* /2 weil es 2 Fragen sind  */

	printf("\nRichige Antworten: %d, Falsche Antworten: %d, Prozent richtig: %f\n\n", richAntw, falsAntw, prozent);

	break;

  case 2: 
	
	return 0;

	break;

  return 0;

}

  return 0;

}

Re: Funktionen? Header?

Verfasst: Do Mär 24, 2011 3:37 pm
von Xin
xSpawn hat geschrieben:ich bin ein ziemlich neuer C Programmierer (ca. 1 Jahr aber nie wirklich etwas richtiges Programmiert)
Fabrikneu, aber nicht mehr originalverpackt, hm? ;-)

Willkommen im Forum.
xSpawn hat geschrieben:Ich will das irgendwie in eine Funktion packen, aber leider weiß ich nicht wie. Ich hab schon eine Header Datei gemacht mit der es funktionieren würde, allerdings finde ich das ein wenig umständlich.
Beachte, dass man in einer Headerdatei nur Deklarationen hat /(haben sollte).
xSpawn hat geschrieben:Ich würde es auch super finden, wenn ich andere Vorschläge für das shorten des Source Code habt, ich denke das ist was einen guten Programmierer ausmacht: Übersichtliche und nicht umständliche Codes. Weiß hier wer Rat? Ich wäre echt dankbar.
Das mit dem kurzem Code ist schon ein erster, guter und sinnvoller Schritt. Keine Sorge danach wird es aber nicht langweilig ;-)
Sich wiederholende Tätigkeiten sollten durchaus in einer Funktion landen.

Nehmen wir folgenden Code:

Code: Alles auswählen

	printf("\n1. Frage: Ist Brüno cool?\nAntworten:<1> Ja    <2> Nein\n\n");
	scanf("%d", &antwort);

  	if (antwort==1)
	  {
	    richAntw++;
	  }
	else if (antwort==2)
                {
	    falsAntw++;
	  }
Hier stellt sich die Frage, ob Du bereits Zeiger kennst?
Lassen wir die Zeiger also für eine erste Antwort mal weg:

Code: Alles auswählen

int ask( char const * question, int answer )
{
  printf( question );
  scanf("%d", &input);

  return input == answer;
}

und in main:

...
  if( ask( "\n1. Frage: Ist Brüno cool?\nAntworten:<1> Ja    <2> Nein\n\n", 2 ) )
    richAntw++;
  else
    falsAntw++;
Mit Zeigern könnte man sogar die if-Abfrage in die ask-Funktion versetzen, aber spiel erstmal damit ein wenig. Ich habe die Antwort für die Frage gleich mal korrigiert. :->

Re: Funktionen? Header?

Verfasst: Do Mär 24, 2011 3:41 pm
von cloidnerux
Hey Com,

ich bin ein ziemlich neuer C Programmierer (ca. 1 Jahr aber nie wirklich etwas richtiges Programmiert) und hab jetzt mal versucht was "anständiges" zu programmieren.
Hi und Willkommen im Forum :D
aber ich will den Source Code irgendwie shorten.
Können wir uns Bitte auf Deutsch ODER richtiges englisch einigen? :D Mir Gefällt so ein Denglisch nicht so sehr...
Du willst deinen Code "refactor"en, wie es Microsoft so schön nennt, also umgestalten.
Sinnvoll, nützlich und ab einer gewissen Größe deines Projekts nötig.
Ich will das irgendwie in eine Funktion packen, aber leider weiß ich nicht wie.
Hast du schon Mit Funktionen gearbeitet, bzw wo stehst du gerade mit deiner Programmeirerrei, was hast du schon alles gelernt/gemacht?

MfG cloidnerux.

Re: Funktionen? Header?

Verfasst: Do Mär 24, 2011 3:51 pm
von xSpawn
Danke für die schnelle Antwort.

Naja es scheint als wäre mein Problem, dass ich Funktionsprototypen nicht so ganz verstehe. Ich könnte jetzt natürlich den Code reinkopieren aber das würde ja nichts bringen (; Ich muss mich wohl nochmal mit den Funktionen und den Funktionsprototypen auseinandersetzen. Und btw: Ich weiß, dass Header nur zur Deklaration da sind, aber da ich es mit den Funktionen nicht so habe, hab ich gleich das ganze rein geschrieben.
cloidnerux hat geschrieben: Hast du schon Mit Funktionen gearbeitet, bzw wo stehst du gerade mit deiner Programmeirerrei, was hast du schon alles gelernt/gemacht?
Siehe oben (; Danke!

Re: Funktionen? Header?

Verfasst: Do Mär 24, 2011 4:01 pm
von Xin
xSpawn hat geschrieben:
cloidnerux hat geschrieben: Hast du schon Mit Funktionen gearbeitet, bzw wo stehst du gerade mit deiner Programmeirerrei, was hast du schon alles gelernt/gemacht?
Siehe oben (; Danke!
http://proggen.org/doku.php?id=c:tutorial:basics