Die Community PC-Techniker Portal IoT
Allgemeines Computer Forum => Programmieren => Thema gestartet von: Hans am Juni 09, 2005, 18:28:06
-
Hi ich arbeite mich der zeit unteranderen mal so richtig in C ein und dachte mir ich schreib mal ein kleines Programm in C ins Forum
1: /* hypothek.c – Berechnet Darlehens-/Hypothekenzahlungen. */
2:
3: #include <stdio.h>
4: #include <math.h>
5: #include <stdlib.h>
6:
7: int main(void)
8: {
9: float betrag, rate, zahlung;
10: int laufzeit;
11: char ch;
12:
13: while (1)
14: {
15: /* Darlehensdaten einlesen */
16: puts("\nGeben Sie die Höhe der Hypothek ein: ");
17: scanf("%f", &betrag);
18: puts("\nGeben Sie die jährliche Zinsrate ein: ");
19: scanf("%f", &rate);
20: /* Anpassung für Prozentangaben . */
21: rate /= 100;
22: /* Anpassung für die monatliche Zinsrate . */
23: rate /= 12;
24:
25: puts("\nGeben Sie die Darlehensdauer in Monaten an: ");
26: scanf("%d", &laufzeit);
27: zahlung = (betrag * rate) / (1 – pow((1 + rate), -laufzeit));
28: printf("Ihre monatliche Belastung beträgt %.2f DM.\n",zahlung);
29:
30: puts("Wünschen Sie eine weitere Berechnung (j oder n)?");
31: do
32: {
33: ch = getchar();
34: } while (ch != 'n' && ch != 'j');
35:
36: if (ch == 'n')
37: break;
38: }
39: return(0);
40: }
Es handelt sich hierbei um einen Hypotheken rechner
Viel spaß bei nach Progen
Gruß Hans
-
Hi finde ich gut was du da machst aber braucht man da nich viel geduld um soetwas zuerstellen.Also ich glaube ich hätte das zeug nich dazu.
-
Hi
Vielen Dank
Muss gestehen das kostet schon manchmal richtig zeit aber macht Spaß
dieses Programm habe ich aber nur von einen Übungsbuch abgeschrieben und ein bisschen umgearbeitet
Gruß Hans
-
Hi
und hier ein kleines Datenbankprogramm von mir :-P
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <dos.h>
#define A_STR_MAX 50 //
#define B_STR_MAX 50
struct person_ds {
char name[A_STR_MAX];
char vname[A_STR_MAX];
char strasse[A_STR_MAX];
int plz;
char stadt[A_STR_MAX];
int tel;
int fax;
int p_id;
};
int pers_count; //Koëè÷åñòâî Àäðåñîø
struct person_ds *adrs; //Óêàçàòåëü ía ïåðåìåííóþ Àäðåñîø
struct buch_ds {
char name[B_STR_MAX];
char autor[B_STR_MAX];
char isbn[15]; //ïðèìåð: 3-8272-6812-5
char info[200];
int vorrat;
int b_id;
};
int buch_count; //Koëè÷åñòâî Kíèã
struct buch_ds *buchr; //Óêàçàòåëü ía ïåðåìåííóþ Kíèã
//ñòðóêòóðà àíòðàãà
struct auftrag_ds {
int p_id;
int b_id;
int outzahl;
char outdatum[11];
char indatum[11];
int auftrag_id;
};
int aufraege_count; //Koëè÷åñòâî àíòðàãîâ
struct auftrag_ds *aufraege; //Óêàçàòåëü ía ïåðåìåííóþ àíòðàãîâ
/* Binäre Suche nach String s in adrs */
/* */
/* zurueckgeliefert wird die Position an der s */
/* gefunden wurde oder ( falls s nicht in der Liste ist) */
/* die Position des nächstgrösseren Elements */
int p_BinSuche( char s[50] )
{
int unten=0, oben=pers_count, mitte;
if ( strcmp(s, adrs[unten].name)<=0 )
//Wenn s keiner oder gleich ...[0].name ist
return 0;
else
{
while( oben - unten > 1 )
{
mitte = (oben-unten)/2;
if ( strcmp(s, adrs[unten+mitte].name) == 0 )
{
unten += mitte;
oben = unten;
}
if ( strcmp(s, adrs[unten+mitte].name) > 0 )
unten += mitte;
else
oben = unten + mitte;
}
if ( strcmp(s, adrs[oben-1].name) == 0 )
oben--;
return oben;
}
}
/* Binäre Suche nach String s in buchr */
/* */
/* zurueckgeliefert wird die Position an der s */
/* gefunden wurde oder ( falls s nicht in der Liste ist) */
/* die Position des nächstgrösseren Elements */
int b_BinSuche( char s[50] )
{
int unten=0, oben=buch_count, mitte;
if ( strcmp(s, buchr[unten].name)<=0 )
//Wenn s keiner oder gleich ...[0].name ist
return 0;
else
{
while( oben - unten > 1 )
{
mitte = (oben-unten)/2;
if ( strcmp(s, buchr[unten+mitte].name) == 0 )
{
unten += mitte;
oben = unten;
}
if ( strcmp(s, buchr[unten+mitte].name) > 0 )
unten += mitte;
else
oben = unten + mitte;
}
if ( strcmp(s, buchr[oben-1].name) == 0 )
oben--;
return oben;
}
}
/* Suche nach Zahl s in aufraege */
/* */
/* zurueckgeliefert wird die Position an der s */
/* gefunden wurde oder ( falls s nicht in der Liste ist) */
/* die Position des letzten Elements */
int a_Suche( int s )
{
int unten=0, oben=aufraege_count, mitte;
for ( mitte = unten; mitte < oben; mitte++ )
if ( s == aufraege[mitte].auftrag_id )
return mitte;
return oben;
}
/* Suche nach Zahl s in adrs */
/* */
/* zurueckgeliefert wird die Position an der s */
/* gefunden wurde oder ( falls s nicht in der Liste ist) */
/* die Position des letzten Elements */
int p_IDSuche( int s )
{
int unten=0, oben=pers_count, mitte;
for ( mitte = unten; mitte < oben; mitte++ )
if ( s == adrs[mitte].p_id )
return mitte;
return oben;
}
/* Suche nach Zahl s in buchr */
/* */
/* zurueckgeliefert wird die Position an der s */
/* gefunden wurde oder ( falls s nicht in der Liste ist) */
/* die Position des letzten Elements */
int b_IDSuche( int s )
{
int unten=0, oben=buch_count, mitte;
for ( mitte = unten; mitte < oben; mitte++ )
if ( s == buchr[mitte].b_id )
return mitte;
return oben;
}
// Vergleich zweier Adressen nach dem Namen
// für qsort
int p_vgl( const void* p1,const void* p2 )
{
struct person_ds* adr1,*adr2;
adr1=( struct person_ds* )p1;
adr2=( struct person_ds* )p2;
return strcmp( adr1->name, adr2->name );
}
// Vergleich zweier Buecher nach dem Namen
// für qsort
int b_vgl( const void* b1,const void* b2 )
{
struct buch_ds* buch1,*buch2;
buch1=( struct buch_ds* )b1;
buch2=( struct buch_ds* )b2;
return strcmp( buch1->name, buch2->name );
}
// Vergleich zweier Aufträde nach dem Namen
// für qsort
int a_vgl( const void* a1,const void* a2 )
{
struct auftrag_ds* auftrag1,*auftrag2;
auftrag1=( struct auftrag_ds* )a1;
auftrag2=( struct auftrag_ds* )a2;
if ( auftrag1->auftrag_id < auftrag2->auftrag_id )
return -1;
if ( auftrag1->auftrag_id > auftrag2->auftrag_id )
return 1;
if ( auftrag1->auftrag_id == auftrag2->auftrag_id )
return 0;
}
//########################################################################
void p_ausgabe();
void p_ausgeben(struct person_ds adr, int _select);
void b_ausgabe();
void b_ausgeben(struct buch_ds buch, int _select);
/*char* string_einlesen()
{
char* str;
return str;
}*/
// Einlesen einer Adresse ueber die Tastatur
struct person_ds p_einlesen()
{
struct person_ds adr;
char str[100];
strcpy(str, " ");
printf( "\n" );
printf( "Name : " );
gets( str );
strcpy(adr.name, str);
printf( "Vorname : " );
gets( str );
strcpy(adr.vname, str);
printf( "Strasse : " );
gets( str );
strcpy(adr.strasse, str);
printf( "PLZ : " );
scanf("%d", &(adr.plz));
fflush( stdin );
printf( "Stadt : " );
gets( str );
strcpy(adr.stadt, str);
printf( "Telefon : " );
scanf("%d", &(adr.tel));
fflush( stdin );
printf( "Telefax : " );
scanf("%d", &(adr.fax));
fflush( stdin );
srand( (unsigned)time( NULL ) );
adr.p_id = rand();
return adr;
}
// Einlesen eines Buches ueber die Tastatur
struct buch_ds b_einlesen()
{
struct buch_ds buch;
char str[100];
strcpy(str, " ");
printf( "\n" );
printf( "Buchname : " );
gets( str );
strcpy(buch.name, str);
printf( "ISBN : " );
gets( str );
strcpy(buch.isbn, str);
printf( "Autor : " );
gets( str );
strcpy(buch.autor, str);
printf( "Beschreibung: " );
gets( str );
strcpy(buch.info, str);
printf( "Vorrat : " );
scanf( "%d", &(buch.vorrat) );
fflush( stdin );
srand( (unsigned)time( NULL ) );
buch.b_id = rand();
return buch;
}
// Einlesen eines Auftrags ueber die Tastatur
struct auftrag_ds a_einlesen()
{
struct auftrag_ds auftrag;
char s[50];
char tmp[11];
int k=0;
char taste;
/*/ fur TCP
struct date d;
getdate(&d);
strcpy(tmp,(char*)&d.da_mon);strcat(tmp,"/");
strcat(tmp,(char*)&d.da_day);strcat(tmp,"/");
strcat(tmp,(char*)&d.da_year);
// für VC++-----*/
_strdate( tmp );
//--------------
strcpy(auftrag.outdatum, tmp);
strcpy(auftrag.indatum, "__/__/__");
while( taste != 'j' ) // P_ID für den auftrag vestlegen
{
p_ausgabe();
printf( "\nName eingeben: " );
scanf( "%s", s );
fflush( stdin );
k = p_BinSuche(s);
if ( strcmp(adrs[k].name, s) == 0 ){
printf("\n");
p_ausgeben( adrs[k], 2); taste = ' ';
while((taste != 'j') && (taste != 'n'))
{
printf( "\nDie Person %s ins Auftrag aufnemmen? j/n:",s);
taste = getch();
if ( taste == 'j' )
auftrag.p_id = adrs[k].p_id;
printf("\n\n");
}}
else
printf( "\nName %s nicht vorhanden\n\n", s );
}
taste = ' '; k=0;
while( taste != 'j' ) // B_ID für den auftrag vestlegen
{
b_ausgabe();
printf( "\nBuchnamen eingeben: " );
scanf( "%s", s );
fflush( stdin );
k = b_BinSuche(s);
if ( strcmp(buchr[k].name, s) == 0 )
{
printf("\n");
b_ausgeben( buchr[k], 2);
if (buchr[k].vorrat>0)
{
taste = ' ';
while((taste != 'j') && (taste != 'n'))
{
printf( "\nDas Buch %s ins Auftrag aufnemmen? j/n:",s);
taste = getch(); //scanf( "%c", taste );
//fflush( stdin );
if ( taste == 'j' )
auftrag.b_id = buchr[k].b_id; printf("\n");
}
}
else
printf( "\nBuch %s ist momentan nich nicht vorretig\n\n", s );
}
else
printf( "\nBuchname %s nicht vorhanden\n\n", s );
}
int i;
do
{
printf( "\nWieviele Buecher werden ausgegeben : " );
scanf( "%d", &i );
if ( i>buchr[k].vorrat )
printf("\nEs koenen nur %d Buecher ausgegeben werden!\n", buchr[k].vorrat );
else
break;
}while(1);
auftrag.outzahl=i;
buchr[k].vorrat = buchr[k].vorrat - auftrag.outzahl;
srand( (unsigned)time( NULL ) );
auftrag.auftrag_id = rand();
//int b_id
return auftrag;
}
// Ausgeben einer Adresse auf den Bildschirm
void p_ausgeben(struct person_ds adr, int _select)
{
// _select = 0, or _select = 1, or _select = 2
int i;
char tmp_name[50];
if (strlen(adr.name)>13){
for (i=0; i<13; i++ )
tmp_name = adr.name;
tmp_name = '\0';}
else
strcpy(tmp_name, adr.name);
char tmp_vname[50];
if (strlen(adr.vname)>12){
for (i=0; i<12; i++ )
tmp_vname = adr.vname;
tmp_vname = '\0';}
else
strcpy(tmp_vname, adr.vname);
char tmp_strasse[50];
if (strlen(adr.strasse)>14){
for (i=0; i<14; i++ )
tmp_strasse = adr.strasse;
tmp_strasse = '\0';}
else
strcpy(tmp_strasse, adr.strasse);
char tmp_stadt[50];
if (strlen(adr.stadt)>13){
for ( i=0; i<13; i++ )
tmp_stadt = adr.stadt;
tmp_stadt = '\0';}
else
strcpy(tmp_stadt, adr.stadt);
if (_select == 0)
printf( "\1 %-5d", adr.p_id );
if (_select == 1)
printf( "\2 %-5d", adr.p_id );
if (_select == 2)
printf( " %-5d", adr.p_id );
printf( "| %-14s", tmp_name );
printf( "| %-13s", tmp_vname );
printf( "| %-15s", tmp_strasse );
printf( "| %-6d", adr.plz );
printf( "| %-14s\n", tmp_stadt );
}
// Ausgeben eines Buches auf den Bildschirm
void b_ausgeben(struct buch_ds buch, int _select)
{
int i;
// _select = 0, or _select = 1, or _select = 2
char tmp_name[50];
if (strlen(buch.name)>13){
for ( i=0; i<13; i++ )
tmp_name = buch.name;
tmp_name = '\0';}
else
strcpy(tmp_name, buch.name);
char tmp_isbn[50];
if (strlen(buch.isbn)>13){
for ( i=0; i<13; i++ )
tmp_isbn = buch.isbn;
tmp_isbn = '\0';}
else
strcpy(tmp_isbn, buch.isbn);
char tmp_autor[50];
if (strlen(buch.autor)>13){
for ( i=0; i<13; i++ )
tmp_autor = buch.autor;
tmp_autor = '\0';}
else
strcpy(tmp_autor, buch.autor);
if (_select == 0)
printf( "\1 %-5d", buch.b_id );
if (_select == 1)
printf( "\2 %-5d", buch.b_id );
if (_select == 2)
printf( " %-5d", buch.b_id );
printf( "| %-14s", tmp_name );
printf( "| %-14s", tmp_isbn );
printf( "| %-14s", tmp_autor );
printf( "| %-14d\n", buch.vorrat );
//printf( "%-7d\n", buch );
}
// Ausgeben eines Aufrags auf den Bildschirm
void a_ausgeben(struct auftrag_ds auftrag, int _select)
{
int i;
// _select = 0, or _select = 1, or _select = 2
int k = p_IDSuche(auftrag.p_id);
char tmp_pname[50];
if (strlen(adrs[k].name)>13){
for ( i=0; i<13; i++ )
tmp_pname = adrs[k].name;
tmp_pname = '\0';}
else
strcpy(tmp_pname, adrs[k].name);
char tmp_pvname[50];
if (strlen(adrs[k].vname)>13){
for ( i=0; i<13; i++ )
tmp_pvname = adrs[k].vname;
tmp_pvname = '\0';}
else
strcpy(tmp_pvname, adrs[k].vname);
k = b_IDSuche(auftrag.b_id);
char tmp_bname[50];
if (strlen(buchr[k].name)>13){
for ( i=0; i<13; i++ )
tmp_bname = buchr[k].name;
tmp_bname = '\0';}
else
strcpy(tmp_bname, buchr[k].name);
if (_select == 0)
printf( "\1 %-5d", auftrag.auftrag_id );
if (_select == 1)
printf( "\2 %-5d", auftrag.auftrag_id );
if (_select == 2)
printf( " %-5d", auftrag.auftrag_id );
printf( "| %-14s", tmp_pname );
printf( "| %-14s", tmp_pvname );
printf( "| %-14s", tmp_bname );
printf( "| %-5d\n", auftrag.outzahl );
}
// Abspeichern einer eingelesenen Adresse
// in einer Datei
void p_eingabe()
{
struct person_ds adr;
adr = p_einlesen();
// falls die Datei nicht leer war
if ( pers_count > 0 )
{
adrs = (struct person_ds*)realloc(adrs, (pers_count+1)*sizeof(person_ds));
adrs[pers_count] = adr;
}
// falls die Datei leer war
else
adrs[0] = adr;
pers_count++;
// Adressen neu sortieren
qsort(adrs, pers_count, sizeof (struct person_ds), p_vgl);
}
// Abspeichern eines eingelesenen Buches
// in einer Datei
void b_eingabe()
{
struct buch_ds buch;
buch = b_einlesen();
// falls die Datei nicht leer war
if ( buch_count > 0 )
{
buchr = (struct buch_ds*)realloc(buchr, (buch_count+1)*sizeof(buch_ds));
buchr[buch_count] = buch;
}
// falls die Datei leer war
else
buchr[0] = buch;
buch_count++;
// Buecher neu sortieren
qsort(buchr, buch_count, sizeof (struct buch_ds), b_vgl);
}
// Abspeichern eines eingelesenen Auftrages
// in einer Datei
void a_eingabe()
{
struct auftrag_ds auftrag;
auftrag = a_einlesen();
// falls die Datei nicht leer war
if ( aufraege_count > 0 )
{
// in der variable 'auftraege' platz für einen neuen auftrag schafen
aufraege = (struct auftrag_ds*)realloc(aufraege, (aufraege_count+1)*sizeof(auftrag_ds));
// den neuen Aufrag an die hientere stelle in die variable 'auftraege' einfuegen
aufraege[aufraege_count] = auftrag;
}
// falls die Datei leer war
else
// wird der Auftrag an erste stelle in der Variable 'auftraege' einfuegen
aufraege[0] = auftrag;
aufraege_count++;
// Auftraege neu sortieren
qsort(aufraege, aufraege_count, sizeof (struct auftrag_ds), a_vgl);
}
// Ausgabe der gesamten Adressdatei
void p_ausgabe()
{
int k;
//clrscr();
printf(" %-5s %-14s %-13s %-15s %-6s %-14s\n\n" ,"ID","Name",
"Vorname","Strasse","PLZ","Stadt");
//printf( "Name\tVorname\tStrasse\tPLZ\tStadt\tTelefon\tTelefax\n\n");
if( pers_count <= 0 )
printf( "Keine Adressen vorhanden\n" );
else
for ( k = 0; k < pers_count; k++ )
p_ausgeben( adrs[k] , 1 );
}
// Ausgabe der gesamten Buchdatei
void b_ausgabe()
{
int k;
//clrscr();
printf(" %-5s %-14s %-14s %-14s %-14s\n\n" ,"ID","Buchname","ISBN","Autor","Vorrat");
if( buch_count <= 0 )
printf( "Keine Buecher vorhanden\n" );
else
for ( k = 0; k < buch_count; k++ )
b_ausgeben( buchr[k], 1 );
}
// Ausgabe der gesamten Auftraegedatei
void a_ausgabe()
{
int k;
//clrscr();
printf(" %-5s %-14s %-14s %-14s %-5s\n\n" ,"A-ID","Name","Vorname","Buchname","Zahl");
if( aufraege_count <= 0 )
printf( "Keine Auftraege vorhanden\n" );
else
for ( k = 0; k < aufraege_count; k++ )
a_ausgeben( aufraege[k], 1 );
}
// Suchen einer Adresse
void p_suchen()
{
char s[50];
int k=0;
printf( "Name eingeben: " );
scanf( "%s", s );
fflush( stdin );
k = p_BinSuche(s);
if ( strcmp(adrs[k].name, s) == 0 )
{
printf("\n %-5s %-14s %-13s %-15s %-6s %-14s\n\n" ,"ID","Name",
"Vorname","Strasse","PLZ","Stadt");
p_ausgeben( adrs[k], 2);
}
else
printf( "\nName %s nicht vorhanden!!!\n", s );
}
// Suchen ein Buch
void b_suchen()
{
char s[50];
int k=0;
printf( "Buchname eingeben: " );
scanf( "%s", s );
fflush( stdin );
k = b_BinSuche(s);
if ( strcmp(buchr[k].name, s) == 0 )
{
printf(" %-5s %-14s %-14s %-14s %-5s\n\n" ,
"A-ID","Name","Vorname","Buchname","Zahl");
b_ausgeben( buchr[k], 2);
}
else
printf( "\nBuchname %s nicht vorhanden!!!\n", s );
}
// Suchen ein Auftrag
void a_suchen()
{
int s=0;
int k=0;
printf( "Auftrag ID eingeben: " );
scanf( "%d", s );
fflush( stdin );
k = a_Suche(s);
if ( aufraege[k].auftrag_id == s )
a_ausgeben( aufraege[k], 2);
else
printf( "\nAuftrag mit ID %d nicht vorhanden!!!\n", s );
}
//Eine Adresse Loeschen
void p_loeschen()
{
int k = 0;
char s[50];
printf( "\nName eingeben: " );
scanf("%s", &s);
k = p_BinSuche(s);
if ( strcmp(adrs[k].name, s) == 0 )
{
adrs[k] = adrs[pers_count - 1];
pers_count--;
// Adressen neu sortieren
qsort(adrs, pers_count, sizeof (struct person_ds), p_vgl);
}
else
printf( "Name %s nicht vorhanden\n", s );
adrs = (struct person_ds*)realloc(adrs, pers_count*sizeof(struct person_ds));
}
//Eine Buch Loeschen
void b_loeschen()
{
int k = 0;
char s[50];
printf( "\nBuchname eingeben: " );
scanf("%s", &s);
k = b_BinSuche(s);
if ( strcmp(buchr[k].name, s) == 0 )
{
buchr[k] = buchr[buch_count - 1];
buch_count--;
// Buecher neu sortieren
qsort(buchr, buch_count, sizeof (struct buch_ds), b_vgl);
}
else
printf( "Buchname %s nicht vorhanden\n", s );
buchr = (struct buch_ds*)realloc(buchr, buch_count*sizeof(struct buch_ds));
}
//Eine Auftrag Loeschen
void a_loeschen()
{
int k = 0;
int s;
char taste;
a_ausgabe();
printf( "\nAuftrag ID eingeben: " );
scanf("%d", &s);
k = a_Suche(s);
if ( aufraege[k].auftrag_id == s )
{
// Zahl der Buecher aus dem Auftrag in Vorrat ubertragen
while( (taste != 'j') && (taste != 'n'))
{
printf("\nSollen die Buecher wieder zu Vorrat addiert werden? j/n:");
taste = getch();
if (taste == 'j')
buchr[b_IDSuche(aufraege[k].b_id)].vorrat =
buchr[b_IDSuche(aufraege[k].b_id)].vorrat + aufraege[k].outzahl;
}
// der zu loeschender Auftrag mit dem Index 'k' wird durch
// den letzten Auftrag aus der Liste ersetzt
aufraege[k] = aufraege[aufraege_count - 1];
aufraege_count--; // Anzahl der Auftraege wird decremmentiert
// Auftraege neu sortieren
qsort(aufraege, aufraege_count, sizeof (struct auftrag_ds), a_vgl);
}
else
printf( "Auftrag mit ID: %d nicht vorhanden\n", s );
// Raallocation der variable 'auftraege' mit der aktuelle Aufträgeanzahl 'aufraege_count'
aufraege = (struct auftrag_ds*)realloc(aufraege, aufraege_count*sizeof(struct auftrag_ds));
}
// laden der Adressdatei in das Feld adrs
void p_laden()
{
FILE* stream;
stream = fopen( "adressen.dat", "r" );
free(adrs);
// falls das Laden funktioniert hat
if ( stream != NULL )
{
// Anzahl der Adressen einlesen
fread( &pers_count, sizeof( int ), 1, stream );
// Speicher allokieren
adrs = (struct person_ds*)calloc(pers_count, sizeof(struct person_ds));
// Adressen einlesen
fread( adrs, sizeof(struct person_ds), pers_count, stream );
fclose(stream);
}
// falls die Datei leer war
else
{
printf( "\nKeine Adressdatei gefunden!\n" );
printf( "\nGeben Sie eine Adresse ein\n\n" );
pers_count = 0;
adrs = (struct person_ds*)calloc( 1, sizeof(struct person_ds) );
p_eingabe();
}
}
// laden der Bucherdatei in das Feld buchr
void b_laden()
{
FILE* stream;
stream = fopen( "buecher.dat", "r" );
free(buchr);
// falls das Laden funktioniert hat
if ( stream != NULL )
{
// Anzahl der Adressen einlesen
fread( &buch_count, sizeof( int ), 1, stream );
// Speicher allokieren
buchr = (struct buch_ds*)calloc(buch_count, sizeof(struct buch_ds));
// Adressen einlesen
fread( buchr, sizeof(struct buch_ds), buch_count, stream );
fclose(stream);
}
// falls die Datei leer war
else
{
printf( "\nKeine Bucherdatei gefunden!\n" );
printf( "\nGeben Sie ein Buch ein\n\n" );
buch_count = 0;
buchr = (struct buch_ds*)calloc( 1, sizeof(struct buch_ds) );
b_eingabe();
}
}
// laden der Auftraegedatei in das Feld aufraege
void a_laden()
{
FILE* stream;
stream = fopen( "auftraege.dat", "r" );
free(aufraege);
// falls das Laden funktioniert hat
if ( stream != NULL )
{
// Anzahl der Auftraege einlesen
fread( &aufraege_count, sizeof( int ), 1, stream );
// Speicher allokieren
aufraege = (struct auftrag_ds*)calloc(aufraege_count, sizeof(struct auftrag_ds));
// Auftraege einlesen
fread( aufraege, sizeof(struct auftrag_ds), aufraege_count, stream );
fclose(stream);
}
// falls die Datei leer war
else
{
printf( "\nKeine Auftraege gefunden!\n" );
printf( "\nGeben Sie ein Auftrag ein\n\n" );
aufraege_count = 0;
aufraege = (struct auftrag_ds*)calloc( 1, sizeof(struct auftrag_ds) );
a_eingabe();
}
}
// speichern von adrs in der Adressedatei
void p_speichern()
{
FILE* stream;
int k;
stream = fopen( "adressen.dat", "w+" );
fwrite( &pers_count, sizeof( int ), 1, stream );
for ( k=0; k<=pers_count-1; k++ )
{
fwrite( &adrs[k], sizeof(struct person_ds), 1, stream);
}
fclose(stream);
}
// speichern von buchr in der Bucherdatei
void b_speichern()
{
FILE* stream;
int k;
stream = fopen( "buecher.dat", "w+" );
fwrite( &buch_count, sizeof( int ), 1, stream );
for ( k=0; k<=buch_count-1; k++ )
{
fwrite( &buchr[k], sizeof(struct buch_ds), 1, stream);
}
fclose(stream);
}
// speichern von aufraege in der Auftragdatei
void a_speichern()
{
FILE* stream;
int k;
stream = fopen( "auftraege.dat", "w+" );
fwrite( &aufraege_count, sizeof( int ), 1, stream );
for ( k=0; k<=aufraege_count-1; k++ )
{
fwrite( &aufraege[k], sizeof(struct auftrag_ds), 1, stream);
}
fclose(stream);
}
// Auswahl der Programmunterpunkte fuer Adressen
int p_menue()
{
int a=0;
char c[10];
//clrscr();
while ( a<1 || a>7 )
{
printf( "\n/****** Menue Adressen ******/\n\n" );
printf( "1. Adresse eingeben\n" );
printf( "2. Adresse suchen\n" );
printf( "3. Adressliste\n" );
printf( "4. Adresse loeschen\n" );
printf( "5. Laden\n" );
printf( "6. Speichern\n" );
printf( "7. Zurueck\n\n" );
printf( "Ihre Eingabe : " );
scanf( "%s", &c );
fflush( stdin );
printf( "\n" );
a = c[0] - 48;
}
return a;
}
// Auswahl der Programmunterpunkte fuer Buecher
int b_menue()
{
int a=0;
char c[10];
//clrscr();
while ( a<1 || a>7 )
{
printf( "\n/****** Menue Bucher ******/\n\n" );
printf( "1. Buch eingeben\n" );
printf( "2. Buch suchen\n" );
printf( "3. Buchliste\n" );
printf( "4. Buch loeschen\n" );
printf( "5. Laden\n" );
printf( "6. Speichern\n" );
printf( "7. Zurueck\n\n" );
printf( "Ihre Eingabe : " );
scanf( "%s", &c );
fflush( stdin );
printf( "\n" );
a = c[0] - 48;
}
return a;
}
// Auswahl der Programmunterpunkte fuer Auftraege
int a_menue()
{
int a=0;
char c[10];
//clrscr();
while ( a<1 || a>7 )
{
printf( "\n/****** Menue Auftraege ******/\n\n" );
printf( "1. Auftrag eingeben\n" );
printf( "2. Auftrag suchen\n" );
printf( "3. Auftragliste\n" );
printf( "4. Auftrag loeschen\n" );
printf( "5. Laden\n" );
printf( "6. Speichern\n" );
printf( "7. Zurueck\n\n" );
printf( "Ihre Eingabe : " );
scanf( "%s", &c );
fflush( stdin );
printf( "\n" );
a = c[0] - 48;
}
return a;
}
// Auswahl der Programmunterpunkte fuer Buecher
int menue()
{
int a=0;
char c[10];
//clrscr();
while ( a<1 || a>7 )
{
printf( "\n/****** Menue ******/\n\n" );
printf( "1. Adressen\n" );
printf( "2. Buecher\n" );
printf( "3. Auftraege\n" );
printf( "4. Ende\n\n" );
printf( "Ihre Eingabe : " );
scanf( "%s", &c );
fflush( stdin );
printf( "\n" );
a = c[0] - 48;
}
return a;
}
int main()
{
int a;
p_laden();
b_laden();
a_laden();
do
{
a=menue();
switch(a)
{
case 1:
do
{
a = p_menue();
switch (a)
{
case 1: p_eingabe(); break;
case 2: p_suchen();
printf("\nweiter mit Eingabetaste\n");
getchar();
break;
case 3: p_ausgabe(); break;
case 4: p_loeschen(); break;
case 5: p_laden(); break;
case 6: p_speichern(); break;
}
if (a==7)
break;
//printf("\nweiter mit Eingabetaste\n");
//getchar();
} while (1);
break;
case 2:
do
{
a = b_menue();
switch (a)
{
case 1: b_eingabe(); break;
case 2: b_suchen();
printf("\nweiter mit Eingabetaste\n");
getchar();
break;
case 3: b_ausgabe(); break;
case 4: b_loeschen(); break;
case 5: b_laden(); break;
case 6: b_speichern(); break;
}
if (a==7)
break;
//printf("\nweiter mit Eingabetaste\n");
//getchar();
} while (1);
break;
case 3:
do
{
a = a_menue();
switch (a)
{
case 1: a_eingabe(); break;
case 2: a_suchen();
printf("\nweiter mit Eingabetaste\n");
getchar();
break;
case 3: a_ausgabe(); break;
case 4: a_loeschen(); break;
case 5: a_laden(); break;
case 6: a_speichern(); break;
}
if (a==7)
break;
//printf("\nweiter mit Eingabetaste\n");
//getchar();
} while (1);
break;
}
if (a==4)
break;
} while (1);
p_speichern();
b_speichern();
a_speichern();
free(adrs);
free(buchr);
free(aufraege);
return 0;
}
-
Ich Pack auch noch ein dazu Taschenrechner einfach damit sind wir Komplett :-D
// This Programm is free Software; you can modify
#include<stdio.h>
#include<math.h>
#define MAX 100
void anleitung()
{
printf("\n\t Taschenrechner \n\n");
printf("Der Taschenrechner unterstuetzt:\n");
printf("\n");
printf(" () geklammerte Ausdruecke\n");
printf(" + Addition\n");
printf(" - Subtraktion\n");
printf(" / Division\n");
printf(" ^ Potenzierung\n");
printf(" s()Sinus\n");
printf("\n");
printf("\t z.B.:(s(1.1^4)-2)/(-4+2*s(1))\n");
printf("\n");
printf("Leerzeichen sind nicht erlaubt\n");
printf("Aufeinanderfolg. Operratoren werden durch 0 "
"getrennt!\n");
printf("Ende durch Eingabe von 0 oder )\n\n");
}
char s[MAX]; //der eingebene Ausdruck,der ausgewertet wird
int i; //s ist das Zeichen,das akt.bearbeitet wird;
float expr(); //Vorwaertsdeklaration
//wandelt eine Ziffernfolge in eine Zahl um.
//statt sprintf() zu verwenden,werden die Zahlen
//Stelle fuer Stelle aufgebaut
float zahl(float q, float c)
{
//c=0 =>noch kein '.'eingelesen
//c=(0.1)^n =>n-te Nachkommastelle
if(c==0)
q=10*q+s-48; // Synthax edit 4
else
q=q+c*(s-48);
if( (s[i+1]>47) && (s[i+1]<58) ) //s[i+1] ist ziffer
if(c==0)
{
i++;
q=zahl(q,0);
}
else
{
i++;
q=zahl(q,c/10);
}
if (s[i+1]=='.')
{
i+=2;
q=zahl(q,0.1);
}
return q;
}
//s_expr() wertet einen Ausdruck aus der
//
// subtrahiert(c=0)
// multipliziert/dividiert(c=1)
// potenziert (c=2) werden soll
//
// der parameter c gibt die Prioritaet an
float s_expr(int c)
{
float q=0;
//Punkt - vor Strichrechnung
while( s!=')' && s!='\0' && s!='+' && s!='-'
&& (c<1 || s!='*') && (c<1 || s!='/')
&& (c<2 || s!='^'))
{
if (s>47 && s<58)
q=zahl(0,0);
switch (s)
{
case '(': i++;
q=expr();
break;
case '*': if(c<1)
{
i++;
q*=s_expr(1);
}
break;
case'/': if(c<1)
{
i++;
q/=s_expr(1);
}
break;
case '^': if(c<2)
{
i++;
q=exp(log(q)*s_expr(2));
}
break;
case 's': i+=2;
q=sin(expr());
break;
}
i++;
}
i--;
return q;
}
//wertet Ausdruck aus
float expr()
{
float qh,q=0;
while(s!=')' && s!='\0')
{
//s ist eine Ziffer => in Zahl umwandeln
if(s>47 && s<58)
q=zahl(0,0);
//s Rechenzeichen / Symbol
switch(s)
{
case '(': i++; q =expr(); break;
case '+': i++; q+=expr();i--; break;
case '-': i++; q-=s_expr(0); break;
case '*': i++; q*=s_expr(1); break;
case '/': i++; q/=s_expr(1); break;
case '^': i++; q =exp(log(q)*s_expr(2));break;
case 's': i+=2;q =sin(expr()); break;
}
i++;
}
return q;
}
int main()
{
anleitung();
do
{
//Eingabeband leeren
for(i=0; i<MAX; i++)
s= ' ';
// Eingabe des Ausdruck
printf("\Ihre Eingabe:\n\n\t");
scanf("%s",&s);
i=0; // Auswertung beginnt mit dem ersten Zeichen
// Auswertung Ausgabe
printf("\n\tErgebnis: %f\n",expr());
}while(s[0]!=')' && s[0]!='0');
}
-
hi leute,
ich möchte mir das auch beibringen bin aber absoluter neuling auf dem programmier gebiet.
wie kriege ich die programme zum laufen?
lg
simse
*nachtrag*
muß ich das noch compilieren? wenn ja wie mache ich das und welche compilierer könnt ihr empfehlen?
-
Hi, den besten Compiler den du für lau kriegen wirst ist sicherlich der GCC > http://gcc.gnu.org/
-
Mal eine ander Frage . Kann man das Xp Spider Solitär um schreiben ? Sprich neue Farbe usw?
Wenn ja wie mache ich das ?
-
Nein, das wird wohl nichts. Das Programm liegt ja in binärer Form vor.
Um das umschreiben zu können bräuchtest du schon den Quellcode und Microsoft wird in dir kaum geben. Das ganze zu decompilieren/deassemblieren ist sicherlich auch verboten und funktioniert auch nicht so locker.
Bei sowas merkt man schnell den Vorteil von OpenSource Software, weil du den Quellcode bekommen kannst und anpassen kannst wie du ihn möchtest.
Mein Tipp, such dir eine OpenSource alternative zu Solitär und pass diese an wie du möchtest.
http://sourceforge.net/projects/pysolfc soll eine recht umfangreiche Sammlung an Kartenspielen sein. Ich hab es aber selbst noch nicht auprobiert.
-
danke baldrian für deine antwort, ich binzwar noch nicht dazu gekommen es auszuprobieren aber das werde ich in kürze nachholen.
viel um die ohren aber das kennt ihr ja:-)
simse