1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
|
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <time.h>
enum{ STRLEN = 100 };
enum{ PLLEN = 100 };
/* Beginn Teilaufgabe a) */
typedef struct {
char Interpret [100];
char Titel [100];
int Jahr [5];
int Minuten [3];
int Sekunden [3];
} Song;
/* Ende Teilaufgabe a) */
/* --- Vorgebene Funktionen, nicht aendern --- */
/* Diese Funktion gibt einen zufaelligen Index
zwischen 0 und laenge-1 zurueck */
int zufallsIndex( int laenge ) {
return (int) rand()%laenge;
}
int laden( Song *playlist ) {
FILE* fin = NULL;
int n = 0;
if ( ( fin = fopen( "playlist.dat", "rb" ) ) != NULL ) {
while ( fread( &(playlist[n]), sizeof(Song), 1, fin ) > 0 && n < PLLEN )
n++;
printf("\nDatensaetze geladen!\n\n");
fclose( fin );
} else {
printf("\nDerzeit sind keine Datensaetze gespeichert!\n\n");
}
return n;
}
void speichern( Song *playlist, int laenge ) {
FILE* fout = NULL;
if ( ( fout = fopen( "playlist.dat", "wb" ) ) != NULL ) {
fwrite( playlist, sizeof(Song), laenge, fout );
printf("\nDatensaetze gespeichert!\n\n");
fclose( fout );
} else {
printf("\nSpeichern fehlgeschlagen\n\n");
}
}
/* --- Ende der vorgebenen Funktionen --- */
/* Beginn Teilaufgabe b) */
/* Diese Funktion liest alle Attribute eines Songs
aus der Kommandozeile und gibt einen struct vom Typ Song zurück */
Song einlesen( Song *playlist, int laenge ) {
Song einzulesender;
printf( "Interpret: ");
scanf ("%s" , einzulesender.Interpret);
printf("Titel: ");
scanf ("%s" , einzulesender.Titel);
printf("Jahr: ");
scanf ("%d" , einzulesender.Jahr);
printf("Minuten: ");
scanf ("%d" , einzulesender.Minuten);
printf("Sekunden: ");
scanf ("%d" , einzulesender.Sekunden);
for (int i=1; i<= laenge; i++)
{
strcpy ( playlist[i], einzulesender);
}
laenge++;
return einzulesender;
// return laenge;
}
/* Diese Funktion gibt alle Attribute eines Songs aus */
void ausgeben( Song song, int i ,int laenge) {
for (i=1; i<= laenge; i++)
{
printf( "%d : %d - %d, %d, %d:%d " , i, song.Interpret[i] , song.Titel[i] , song.Jahr[i] , song.Minuten[i] , song.Sekunden[i]);
}
}
/* Ende Teilaufgabe b) */
/* Beginn Teilaufgabe c) */
int loeschen(Song *playlist, int pos , int laenge, *Song ) {
pos = -1;
while(pos <<0||pos>>laenge)
{
printf ("Welcher Song soll gelöscht werden?");
scanf("%d" , &pos);
}
for (int i=pos; i<=laenge; i++)
{ strcpy ( playlist.Song[i], playlist.Song[i+1]);
}
return laenge--;
}
/* Ende Teilaufgabe c) */
/* Beginn Teilaufgabe d) */
void shuffle( Song *playlist, int laenge ) {
for (int i=1; i<= laenge-1; i++)
{
Song platzhalter;
int teins=zufallsIndex, tzwei=zufallsIndex;
strcpy (platzhalter, playlist[teins]);
strcpy (playlist[teins], playlist[tzwei]);
strcpy (playlist[tzwei], platzhalter);
}
}
/* Ende Teilaufgabe d) */
/* Beginn Teilaufgabe e) */
int jahrSuchen( Song *playlist, int jahr[4], int laenge ) {
int j,i;
printf ("Nach Jahr suchen: ");
scanf("%d" , jahr);
for(i=0; i<=laenge; i++)
{
if ( strcmp (playlist.jahr[i], jahr, 3) ==1)
{
printf ("%s" , playlist[i]);
j++;
}
else{}
}
printf ("Die Suche ergab %d treffer." , j);
}
/* Ende Teilaufgabe e) */
/* Beginn Teilaufgabe f) */
int interpretSuchen( Song *playlist, char *interpret, int laenge ) {
int interpret[];
int j,i;
printf ("Nach Interpret suchen: ");
scanf("%d" , interpret);
for(i=0; i<=laenge; i++)
{
if ( strcmp (playlist.interpret[i], interpret, PLLEN) ==1)
{
printf ("%s" , playlist[i]);
j++;
}
else{}
}
printf ("Die Suche ergab %d treffer." , j);
}
/* Ende Teilaufgabe f) */
int main( void ) {
Song;
Song playlist[PLLEN];
int laenge = 0, fertig = 0, einlesen = 0, ausgeben,loeschen;
char eingabe;
// char *playlist;
srand(time(NULL));
while ( !fertig ) {
printf("\nl: laden\n");
printf("s: speichern\n");
printf("e: einlesen\n");
printf("d: loeschen\n");
printf("a: ausgeben\n");
printf("m: mischen\n");
printf("j: jahr suchen\n");
printf("i: interpret suchen\n");
printf("b: beenden\n\n");
printf("Eingabe: ");
scanf(" %c", &eingabe );
getchar();
switch( eingabe ) {
case 'l': laenge = laden( playlist ); break;
case 's': speichern( playlist, laenge ); break;
case 'e': einlesen( laenge, playlist ); break;
case 'a': ausgeben (playlist); break;
case 'd': int loeschen(Song *playlist, int pos , int laenge, *Song ); break;
case 'm': mischen ( ) ; break;
case 'b': fertig = 1; break;
default: printf("Funktion nicht verfuebar!\n\n");
}
}
return 0;
}
|