C Funktionen & Header Datei schreiben

Havoc17

New member
Hi,

habe mal wieder ein Problem
Ich möchte das folgende Programm in eine main.c und potenz.h unterteilen
mit der funktion xhochy

Das ist das Programm
Code:
#include <stdio.h>

void main() {

	int x, y, i, potenz;


	printf("Bitte geben sie die Basis ein ");							//5^4  =5*5*5*5
	scanf(" %i",&x);

	printf("Bitte geben sie den Exponenten ein ");
	scanf(" %i",&y);
		
	potenz = 1;
		for(i=1; i<=y; i++)
			{
				potenz = potenz * x;
			}

		printf("Ergebnis: %i\n",potenz);
Ich habe davon bis jetzt noch keinen Plan, und Wiki habe ich auch noch nicht ganz verstanden.
 
Zuletzt bearbeitet:

bitmuncher

Moderator
Was willst du denn da noch groß aufteilen? Da ist ja nichtmal ein Funktionsaufruf drin, dessen Prototyp du in die Header-Datei packen könntest.
 

b4ck

New member
um headerdatein einzubinden musst du einfach eine neue datei erstellen:

"blubb.h"

und dann oben bei den includes
Code:
#include "blubb.h"
schreiben sofern die datei im selben verzeichnis liegt.
 

Havoc17

New member
Ich glaube ich habe da was falsch verstanden :(

Code:
#include <stdio.h>
#include <math.h>

int x, y,  i, potenz;


int xhochn (int y)
		{
			potenz = 1;
			for(i=1; i<=y; i++)
				{
					potenz = potenz * x;
				}

			return potenz;
		}



void main() {

	int x, y,  i, potenz;


	printf("Bitte geben sie die Basis ein ");							//5^4  =5*5*5*5
	scanf(" %i",&x);

	printf("Bitte geben sie den Exponenten ein ");
	scanf(" %i",&y);

		
	
		printf("Ergebnis: %i\n",potenz);

}
Wie gebe ich jetzt im main das ergebnis von "potenz" aus? Ich bekomme mommentan immer 0 als Ergebnis
 

Chris_XY

New member
Ich würde dir zuersteinmal so etwas empfehlen:
http://openbook.galileocomputing.de/c_von_a_bis_z/

Da werden Funktionen, Funktionsaufrufe und Sichtbarkeit von Variablen erklärt.

Dein x in der Funktion xhochn ist wohl das globale x von direkt drüber, aber in deinem Hauptprogramm erzeugst du eine neue Variable x, der du einen Wert zuweist. Der ist in der Funktion nicht sichtbar.

Lesbarer ist es sowieso, x und y der Funktion zu übergeben. Dann muss man nicht suchen, welches x jetzt gültig ist.
 

Havoc17

New member
Danke

main.c

Code:
#include <stdio.h>
#include <math.h>
#include "myheader.h"

int x, y,  i;

//Funktion xhochn
int xhochn (int x,int y)
		{
			int  potenz;  //exisiert nur in dieser Funktion
			
			potenz = 1; 

						for(i=1; i<=y; i++) 
				{
					potenz = potenz * x;
				}

			return potenz;							//Rückgabe von "potenz"
		}



void main() {		//Beginn von Main

	

	printf("Bitte geben sie die Basis ein ");							
	scanf(" %i",&x);								//Eingabe x	

	printf("Bitte geben sie den Exponenten ein ");
	scanf(" %i",&y);								//Eingabe y

	//xhochn(x,y);				
	
		printf("Ergebnis: %i\n",xhochn(x,y));		//aufruf von xhochn(x,y)

}
myheader.h

Code:
#ifndef MYHEADER_H
#define MYHEADER_H

int xhochn (int );

#endif /* MYHEADER_H */
Frage: Ist die Header Datei nur für die übersicht sinnvoll?
 
Zuletzt bearbeitet:

b4ck

New member
theoretisch könntest du alles in eine datei packen.
aber sobald programme größer werden macht es sinn sie in unterschiedliche dateien aufzuteilen um bessere übersicht zu erhalten.

keiner scrollt gerne durch riesen files durch.

zB. die php-lib "tcpdf" hat ein file für die ganze library mit ~15.000 zeilen darin etwas zu suchen ist schon sehr sehr mühsam.
 

beavisbee

Member of Honour
Frage: Ist die Header Datei nur für die übersicht sinnvoll?
Nein. In erster Linie geht es hier auch um Wiederverwendbarkeit.
angenommen, du schreibst ein paar Funktionen, um mit 'ner Datenbank zu kommunizieren - jetzt wäre es doch doof, wenn du für jedes Programm, welches mit der Datenbank kommunizieren soll, die Verbindungs-Aufbau-Funktion, die Datenbank-Abfrage-Funktion, etc. neu schreiben müsstest oder zumindestens jedes mal komplett in das Programm rein kopieren müsstest....
 

Chris_XY

New member
Globale Variablen mag man eigentlich nicht so besonders.
Schiebe die Deklaration von x und y in die Main() Funktion und i in die Funktion.

Ich kann nicht sagen, was die beste Methode ist, eine Programmiersprache zu lernen, aber meine persönliche Empfehlung wäre, so ein Buch von vorne bis hinten einmal durchzulesen, nur um sich einen Überblick zu verschaffen und sich die grundlegenden Designprinzipien anzuschauen. Ich denke, dass es effektiver ist im zweiten Durchlauf, die Sprache dann "richtig" zu lernen, wenn man schon ein gutes Vorverständnis hat.
 
Oben