Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 21:03

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



C Funktionen Problem

Discussion on C Funktionen Problem within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jan 2011
Posts: 362
Received Thanks: 41
C Funktionen Problem

Huhu habe ein problem mal wieder undzwar lernen wir in der Schule jetzt funktionen und sollen ein Programm für einen Briefmarken automaten schreiben.
Nun folgendes problem jedes mal sagt mir das programm das irgendwas nicht initialisiert ist obwohl es das ist. Das andere mal hats mir alle werte immer auf 0 gesetzt weil es verlangt hat das ich die sachen auf 0 deklarieren soll -.- hier bisher was ich neu probiert habe, programm zeigt mir nach auswählen der marke ein error report und das P wohl nicht initialisiert wäre..
Code:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void auswahlBriefmarke(){
	int marke;
	printf("[1.]Postkarte     0,45 Eur\t\t [2.]Maxibrief  2,20 Eur\n");
	printf("[3.]Standartbrief 0,55 Eur\t\t [4.]Paekchen   4,30 Eur\n");
	printf("[5.]Kompaktbrief  0,90 Eur\t\t [6.]Grossbrief 1,45 Eur\n");
	printf("Bitte waehlen sie aus was sie moechten !\n");
	marke=getch();
}
void briefPreis(int preis){
	int p;
	switch(p){
	case '1': preis=0,45;
	case '2': preis=2,20;
	}
	printf("Sie muessen %i zahlen \n",preis);
}


int main(){
	int preis=0,p;
	auswahlBriefmarke();
	briefPreis(preis);
	return 0;
}
Habs soweit nun hinbekommen nur will er mir irgendwie nicht den restbetrag ausrechnen.. ._.
Code:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int auswahlBriefmarke(){
	int marke;
	printf("[1.]Postkarte     0,45 Eur\t\t [2.]Maxibrief  2,20 Eur\n");
	printf("[3.]Standartbrief 0,55 Eur\t\t [4.]Paekchen   4,30 Eur\n");
	printf("[5.]Kompaktbrief  0,90 Eur\t\t [6.]Grossbrief 1,45 Eur\n");
	printf("Bitte waehlen sie aus was sie moechten !\n");
	marke=getch();
	fflush(stdin);
	return marke;
}
int briefAnzahl(){
	int anzahl=0;
	printf("Wieviele moechten sie?\n");
	scanf("%i",&anzahl);
	fflush(stdin);
	return anzahl;
}

int  briefPreis(int p ,int a){
	float preis=0;
	switch(p){
	case '1': preis=0.45*a;break;
	case '2': preis=2.20*a;break;
	case '3': preis=0.55*a;break;
	}
	printf("Sie muessen %.2fEuro zahlen \n",preis);
	return preis;
}
float geldEinwurf(){
	float geld=0;
	printf("Wieviel Geld moechten sie einwerfen?: ");
	scanf("%f",&geld);
	fflush(stdin);
	return geld;
}
void verarbeitung(float preis, float geld){
	float rest;
	rest=preis-geld;
	printf("Sie haben %.2f Eur uebrig ",rest);
}


int main(){
	float preis=0,geld=0;
	int p,a,g,b;

	p = auswahlBriefmarke();
	a = briefAnzahl();
	b = briefPreis(p,a);
	g = geldEinwurf();
	verarbeitung(preis,geld);
	system("PAUSE");
	return 0;
}
Rullx3 is offline  
Old 03/05/2013, 14:16   #2
 
Schlüsselbein's Avatar
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
Was mir beim Überfliegen aufgefallen ist.
In briefPreis(int, int) vergleichst du im switch mit einem char. Lass die Anführungsstriche weg.
Schlüsselbein is offline  
Old 03/05/2013, 16:31   #3
 
elite*gold: 0
Join Date: Jan 2011
Posts: 362
Received Thanks: 41
ja aber mit dem getch wird ja ein tastendruck erfrasst und da diese eine zahl sind würde ohne die ' ' nichts passieren weils wie ein zeichen ist.. :/
Rullx3 is offline  
Old 03/05/2013, 17:08   #4
 
Schlüsselbein's Avatar
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
Ja, stimmt. Dann übergeb als Parameter auch einen char - das verwirrt sonst nur. Auch wenn ein char im Prinzip ein int ist und es deswegen keine Fehler gibt.
Schlüsselbein is offline  
Thanks
1 User
Old 03/05/2013, 17:25   #5
 
xNopex's Avatar
 
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
Code:
int main(){
	float preis=0,geld=0;
	int p,a,g,b;

	p = auswahlBriefmarke();
	a = briefAnzahl();
	b = briefPreis(p,a);
	g = geldEinwurf();
	verarbeitung(preis,geld);
	system("PAUSE");
	return 0;
}
Beim Aufruf von "verarbeitung" sind "preis" und "geld" jeweils 0.

EDIT:
Code:
int  briefPreis(int p ,int a){
	float preis=0;
	switch(p){
	case '1': preis=0.45*a;break;
	case '2': preis=2.20*a;break;
	case '3': preis=0.55*a;break;
	}
	printf("Sie muessen %.2fEuro zahlen \n",preis);
	return preis;
}
Hier gehen auf jeden Fall Informationen verloren. "preis" ist float Rückgabewert der Funktion ist jedoch "int". Soweit ich mich erinnere werden hier die Nachkommastellen abgeschnitten?
Dazu möchte ich darauf hinweisen, Funktionen in C ohne Parameter mit einem void zu versehen:
Code:
int foo(void)
xNopex is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
[Release]duffbier`s D3D NoMenu Base [D3D Funktionen/Normale Funktionen]
06/01/2011 - WarRock Hacks, Bots, Cheats & Exploits - 15 Replies
Hey Com. Ich hab mich entschieden meine D3D NoMenu Base zu Releasen In dieser kannst du normale Funktionen sowie D3D Funktionen adden Screens: http://img64.imageshack.us/img64/4444/screeenl.jp g
°*NEW Funktionen*° th3man0f22 NO MENÜ Public Hack°*NEW Funktionen*° 06.09.2010
09/06/2010 - WarRock Hacks, Bots, Cheats & Exploits - 2 Replies
Funktionen: PLAYERPOINTER ¤SERVERPOINTER (Immer an)¤ ¤NOSPREAD (Numm-Pad 7)¤ ¤FULLBRIGHT (Numm-Pad 5)¤ ¤EXTRAAMMO1 (Immer an)¤ ¤EXTRAAMMO2 (Immer an)¤ ¤SCOPE (Rechte Maustaste)¤ ¤FASTAMMO (Immer an)¤
Funktionen-Problem
04/10/2010 - GW Bots - 8 Replies
Hey Ich will ein Skript ganz einfach 2 Funktionen hintereinander ausführen lassen(Teil im Ausenposten----> Teil im Gebiet) Die erste Funktion läuft ganz normal durch( Char läuft durchs Portal, Skript wartet bis Map geladen ist),aber die zweite fängt erst garnicht an.:confused: Beide Funktionen laufen einzeln perfekt. Kann mir einer von euch verraten warum?
Problem mit verschiedenen Funktionen
04/06/2010 - AutoIt - 2 Replies
Also solangsam komm ich mir peinlich vor weil ich dauernt fragen hab.... (bin aber noch ein kleiner autoit-noobie:D) Also ich habe einen Bot gemacht der solange wartet bis eine taste gedrückt wird und dann die logindaten in das metin fenster schreibt... es wäre aber vllt. ganz praktisch wenn man während dieser Funktion noch die Funktion Pause aufrufen könnte(habe es mit guioneventmode gemacht) so sieht ungefähr die Funktion aus wenn man sie vereinfacht Func _relogg() If $Char1 = 1...



All times are GMT +1. The time now is 21:04.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.