it2012 Newbie

Anmeldungsdatum: 26.01.2012 Beiträge: 3
|
Verfasst am: 26 Jan 2012 - 23:04:16 Titel: Multiplikation von Extrem langen Zahlen |
|
|
Hallo leute, diese Informatik aufgabe habe ich versucht zu lösen, aber leider ohne erfolg...
Ich wäre echt froh wenn mir jemand helfen könnte..
Die Aufgabe:
-----------------------------------------------------------------------------
Zwei sehr lange ganze, positive Zahlen ( a und b ) sind miteinander zu multiplizieren und das Ergebnis ( c ) ist auszugeben.
Die Zahlen a,b und c sind jeweils als String gespeichert:
char a[512]="123456789012345678901234567890123456789";
char b[512]="98765432109876543210987654321098765432109876";
Geben Sie eine Funktion an, welche das Ergebnis im Feld char c[...] ablegt.
Beachten Sie, dass der Ausdruck a[0]-'0' die erste Ziffer der Zahl a als Integer beinhaltet!
#include <stdio.h>
void mult(char a[], char b[], char c[]) {
int main (void) {
char a[512]="99999999999999999999999999";
char b[512]="11111111111111111111111111";
char c[1025];
mult(a,b,c);
printf("%s * %s = %s\n",a,b,c);
}
-----------------------------------------------------------------------------
Mein lösungsansazt bis jetzt lautet:
void mult(char a[], char b[], char c[]){
int i,k,q,j;
char temp1[512][1025] = {0};
char temp2[512][1025] = {0};
char temp3[512][1025] = {0};
char temp4[512][1025] = {0};
for (i=0 , j=5 ; i<=5 , j>=0 ; i++ , j--) {
for (k=5; k>=0; k--) {
temp2[i][k+6-i] = ((a[k]-4 * (b[j]-4 )/10;
temp4[i][k+6-i] = ((a[k]-4 * (b[j]-4 + temp2[i][k+7-i])/10;
temp1[i][k+7-i] = ((a[k]-4 * (b[j]-4 + temp4[i][k+7-i])%10;
temp1[i][k+6-i] = temp4[i][k+6-i];
}
}
for (k=13; k>=0; k--) {
for (i=5; i>=0; i--) {
temp3[1][k] += temp1[i][k];
}
}
for (k=12; k>=0; k--) {
c[k] = (temp3[1][k] + temp3[0][k])%10;
temp3[0][k-1] = ( temp3[1][k] + temp3[0][k] )/10;
}
} |
|