Hallo,
wir sollen eine Textdatei erstellen lassen, die zwischen 1-32 32bit Binärzahlen enthält.
Soweit sogut und auch nicht wirklich ein Problem
Mein Quellcode:
|
Source code
|
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
|
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void zufallsBinaer(int* pfad,int n)
{
FILE* a;
a=fopen("paritaet.txt","w");
if(a==NULL)
{
printf("Dateifehler.Ende\n");
return;
}
srand(time(NULL));
int i,b;
for(i=0;i<n;i++)
{
for(b=0;b<32;b++)
{
pfad[b]=rand()%2;
fprintf(a,"%i",pfad[b]);
}
fprintf(a,"\n");
}
fclose(a);
}
int main()
{
int a[33];
int x;
printf("Geben Sie an,wie viel 32bit Binaerzahlen Sie haben wollen:\n");
scanf("%i",&x);
zufallsBinaer(a,x);
system("pause");
return 0;
}
|
Das Funktionierte auch so bei mir.
JEtzt kommt mein Probelm, ich soll Zeilenweise die Binärzahlen auslesen und gucken ob das Ergebnis jeder Zeile gerade oder ungerade ist.
also zB:
10111010111011101111000011110100
Es sind also 20 Einsen enthalten und somit gerade also soll eine 1 ausgegeben werden , wären es 21 soll eine 0 ausgegeben werden.
Das was Pro Zeile rauskommt soll am Ende meiner Textdatei als neue Binärzahl geschrieben werden.
zB:
10111010111011101111000011110100
10111010111011101111000011110101
10111010011011101111000011110100
10111010111011101111000011110110
10111010111011101111000011110100
10001
Keine Ahnung wie ich das machen soll.
Vorgabe ist, dass das alles in einer neuen Funktion void parityAppend(char* pfad, int anzahl) geschrieben werden muss.
Kann mir da jemand helfen??
VLLT mit Erklärungen?
Achja die vorgegeben Lösung wäre diese
|
Source code
|
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
|
void parityAppend(char* pfad, int anzahl){
FILE* datei = fopen(pfad, "r");
if(datei == NULL) return;
char buffer[50];
char paritynumber[50];
int n = 0;
int j = 0;
int parity;
while(fgets(buffer, 50, datei)!=NULL){
parity = 0;
for(j=0; j<32;j++){
parity += (buffer[j] - '0');
}
parity = parity%2;
paritynumber[n]=parity + '0';
n++;
}
fclose(datei);
//Appenden der Paritaetszahl
datei = fopen(pfad, "a");
if(datei == NULL) return;
int i;
char temp[50];
for(j=0;j<n;j++){
fputc(paritynumber[j],datei);
}
fputc('\n', datei);
fclose(datei);
}
|
Mein Probllem ist , dass diese Lösung nicht auf meine erste Funktion passend ist und DASS ich Probleme habe, was genau welches ARRAY, fputc und fgets hier macht ??
Kann mir da vielleicht jemand helfen?
DANKEE LG