Willkommen im #Neuland
Login wie bei quake.ingame.de zuvor, die Passwörter aus der alten Datenbank wurden aber gelöscht - einmal hier neu anfordern.
Wer seine E-Mail-Adresse nicht mehr hat oder kennt, bitte eine Nachricht mit Infos schicken o. im Discord melden.

PQ Discord Server: #planetquake                                                                                                                                         Spenden? Hier entlang!

C Programm richtig?

Forum für alles rund ums Coden und web.design - HTML, XHTML, XML, CSS, PHP, ASP, Zugriffsrechten, Mods uvm.
Antworten
caine
Defense
Defense
Beiträge: 7361
Registriert: Jul 2002

C Programm richtig?

Beitrag von caine »

Sers,
ich habe hier den CBuilder5, und musste seit langem mal wieder ein Programm schreiben aber der Compiler stürtzt bei jedem Programm was ich schreibe immer ab beim compilieren wenn er keinen Fehler findet :ugly:
Könnte ihr mir sagen ob das Programm laufen müsste?
Danke!

Code: Alles auswählen

[small]#include <stdio.h>  //Standard-Inpur-Output-Funktion
#include <conio.h>  //Console_Input-Output-Funktion

int main (void)
{

/*Konstanten*/
int AE = 150000000, licht_geschwindigkeit = 300000;

/*Variablen für die Aufgbenteile*/
int zeit_sonne_erde, zeit_sonne_jupiter, zeit_erde_jupiter;
int t1, t2, t3; /*Variablen zur formatierung der zeit*/
char choice;

/*aufgabe 4.1*/
zeit_sonne_erde = AE/licht_geschwindigkeit;
/*Formatierung der Zeit*/
 t1 = zeit_sonne_erde % 60; /*sekunden*/ zeit_sonne_erde = (zeit_sonne_erde - t1)/60;
 t2 = zeit_sonne_erde % 60; /*minuten*/ zeit_sonne_erde = (zeit_sonne_erde - t2)/60;
 t3 = zeit_sonne_erde; /*stunden*/
printf("Zeit Sonne-Erde: %d : %d : %d\n", t1,t2,t3);


/*aufgabe 4.2*/
zeit_sonne_jupiter = 5.2*AE/licht_geschwindigkeit;
/*Formatierung der Zeit*/
 t1 = zeit_sonne_jupiter % 60; /*sekunden*/ zeit_sonne_jupiter = (zeit_sonne_jupiter - t1)/60;
 t2 = zeit_sonne_jupiter % 60; /*minuten*/ zeit_sonne_jupiter = (zeit_sonne_jupiter - t2)/60;
 t3 = zeit_sonne_jupiter; /*stunden*/
printf("Zeit Sonne-Jupiter: %d : %d : %d\n", t1,t2,t3);

/*aufgabe 4.3 und 4.4*/

printf("Berechnung der Entfernung Jupiter-Erde in (K)onjugation oder (O)pposition?");
scanf("%c", &choice);

if (choice == 'k' || choice == 'K')
   zeit_erde_jupiter = zeit_sonne_jupiter - zeit_sonne_erde;
else 
   zeit_erde_jupiter = zeit_sonne_jupiter + zeit_sonne_erde;

/*Formatierung der Zeit*/
 t1 = zeit_erde_jupiter % 60; /*sekunden*/ zeit_erde_jupiter = (zeit_erde_jupiter - t1)/60;
 t2 = zeit_erde_jupiter % 60; /*minuten*/ zeit_erde_jupiter = (zeit_erde_jupiter - t2)/60;
 t3 = zeit_erde_jupiter; /*stunden*/
printf("Zeit Erde-Jupiter: %d : %d : %d\n", t1,t2,t3);


/*Aufgabe 4.7*/
/*ein Lichtjahr ist die Strecke die das Licht in einem Jahr zurücklegt
  also: 60*60*24*365*300000km = 9.4608*10^12 km hatte keine lust mehr das zu machen und weiss auch nicht genau wie das geht*/

getch();
clrscr();
return 0;
}
[/small]
"Die Signatur der modernen Welt sind Angst und Depressionen"
Die Welt zu sehen heißt nicht sie zu verstehen und wenn du meinst sie zu verstehen, dann sage ich du bist blind[/CENTER]
oNyx
Sorlag
Sorlag
Beiträge: 3855
Registriert: Mai 2001

Beitrag von oNyx »

int AE = 150000000

das passt schonmal nicht umbedingt. 2byte int (aka short) is +/- 32k.

nehm da ma... double :>
弾幕 to the full extent of the jam!
BildBildBildBild
ze blog [rss] ☆ java game tutorialseee games
ap0calypse
Slash
Slash
Beiträge: 678
Registriert: Jan 2004
Wohnort: Wörgl / Tirol / Austria

Beitrag von ap0calypse »

Original erstellt von Caine

Code: Alles auswählen

[small]
scanf("%c", &choice);
[/small] [/b]
Wieso &choice ?

Also entweder ich habe jetzt nicht mehr genau im Kopf was das heißen soll, oder ich verstehe deinen Denkansatz nicht.

Dein Aufruf würde also bedeuten:

Schreibe den vom Standardinput gelesenen Wert als die Adresse von choice?

Verstehe nicht warum du da einen Zeiger-Operator verwendest ...
To follow the path:
look to the master,
follow the master,
walk with the master,
see through the master,
become the master.
Menace2Sobriety
Cadavre
Cadavre
Beiträge: 3396
Registriert: Okt 2001
Wohnort: Ja, gerne

Beitrag von Menace2Sobriety »

Original erstellt von ap0calypse

Schreibe den vom Standardinput gelesenen Wert als die Adresse von choice?

Verstehe nicht warum du da einen Zeiger-Operator verwendest ...

Code: Alles auswählen

int scanf(
   const char *format [,
   argument]... 
);
"The scanf function reads data from the standard input stream stdin and [green]writes the data into the location given by argument[/green]. Each argument must be [green]a pointer to a variable[/green] of a type that corresponds to a type specifier in format."
:>
I feel sorry for people who don't drink. When they wake up in the morning, that's as good as they're going to feel all day - Frank Sinatra / Josh Ward
ap0calypse
Slash
Slash
Beiträge: 678
Registriert: Jan 2004
Wohnort: Wörgl / Tirol / Austria

Beitrag von ap0calypse »

Hast Recht, war mein Fehler. Zu meiner Entschuldigung:

Es ist Montag, es war noch früh, ich bin müde und äußerst demotiviert :(

Sorry, für den oben verzapften Bullshit.
To follow the path:
look to the master,
follow the master,
walk with the master,
see through the master,
become the master.
qq~
Daemia
Daemia
Beiträge: 325
Registriert: Apr 2002

Beitrag von qq~ »

Original erstellt von oNyx
int AE = 150000000

das passt schonmal nicht umbedingt. 2byte int (aka short) is +/- 32k.

nehm da ma... double :>
Warum ueberhaupt signed? Kann AE denn negativ sein bzw. ergibt das 'n Sinn? Mach lieber gleich unsigned double, nur für alle Fälle.
Bild
tilman

Beitrag von tilman »

int ist auf 32bit Maschinen 32bit breit...
oNyx
Sorlag
Sorlag
Beiträge: 3855
Registriert: Mai 2001

Beitrag von oNyx »

Original erstellt von Trill
int ist auf 32bit Maschinen 32bit breit...
[fp]printf("%i",sizeof(int));[/fp]

2

mit nem andern compiler kann das aber schon wieder anders aussehn. aber nur weil die maschine 32bit is, sinds die ints noch lange nicht :>
弾幕 to the full extent of the jam!
BildBildBildBild
ze blog [rss] ☆ java game tutorialseee games
Menace2Sobriety
Cadavre
Cadavre
Beiträge: 3396
Registriert: Okt 2001
Wohnort: Ja, gerne

Beitrag von Menace2Sobriety »

Original erstellt von oNyx


[fp]printf("%i",sizeof(int));[/fp]

2

mit nem andern compiler kann das aber schon wieder anders aussehn. aber nur weil die maschine 32bit is, sinds die ints noch lange nicht :>
bei borland isses aber so ;>
und bei m$ auch.
I feel sorry for people who don't drink. When they wake up in the morning, that's as good as they're going to feel all day - Frank Sinatra / Josh Ward
edgewalker

Beitrag von edgewalker »

Verlassen sollte man sich trotzdem nie auf eine feste Grösse von Datentypen.
oNyx
Sorlag
Sorlag
Beiträge: 3855
Registriert: Mai 2001

Beitrag von oNyx »

Original erstellt von Menace2Sobriety
bei borland isses aber so ;>
und bei m$ auch.
das war ein borland compiler. ha! :P
弾幕 to the full extent of the jam!
BildBildBildBild
ze blog [rss] ☆ java game tutorialseee games
caine
Defense
Defense
Beiträge: 7361
Registriert: Jul 2002

Beitrag von caine »

Erstmal THX!
Ich habe nun 15min gebraucht um das überhaupt hier Lesen zu können ;) Das Forum spackt mal wieder.
Habe nun int in double geändert.
Sollte das Prog denn nun ansich laufen? :)
"Die Signatur der modernen Welt sind Angst und Depressionen"
Die Welt zu sehen heißt nicht sie zu verstehen und wenn du meinst sie zu verstehen, dann sage ich du bist blind[/CENTER]
Chawki

Beitrag von Chawki »

Original erstellt von oNyx


[fp]printf("%i",sizeof(int));[/fp]

2

mit nem andern compiler kann das aber schon wieder anders aussehn. aber nur weil die maschine 32bit is, sinds die ints noch lange nicht :>
Deshalb gibt's ja auch

stdint.h

und

ieee754.h

Es gibt ja Bücher wie den ANSI-C-Standard ( http://www.ucalgary.ca/~bgwong/n869.pdf ), in denen man das nachlesen kann. Da findet man auch in anderen Büchern selten zu findende sachen wie imaginäre und komplexe Zahlen (complex.h) und auch imaginäre und komplexe NANs, infs usw. ;)

-----------------------------------------------------------
/* Call subroutine, e. g. ISR, at *VECTOR e. g. from the IVT. */
# define mc_V_SUBROUTINE(VECTOR) (*(void(**)(void))(VECTOR))()

# define POS_INF (1./0.)
# define NAN (0./0.)
Antworten