Dies ist der letzte Teil in einem großen Projekt. Die Frage meines Projekts ist, das Programm in C zu programmieren, das von dezimal in binär konvertieren kann. Ich habe alles gemacht, aber ich blieb bei einem Teil. Nach der Trennung in zwei Arrays - ein Array enthält die Positionen von 1 und ein anderes enthält die Positionen von 0. Zum Beispiel mit Nummer 19. Meine Arrays haben:Kombinieren und sortieren Sie zwei Arrays mit unterschiedlicher Größe. Dann ersetzen Sie sie durch 0 und 1 in C-Programm
array1 = {4,1,0} //which are pow(2,4),pow(2,1), and pow(1,0)
. Natürlich sollten diese Zahlen mit der Nummer 1.
Ähnlich ersetzt werden, zeigen array2 = {3,2} // which are pow(2,3) and pow(2,2)
die Zahlen sollten mit der Nummer 0.
Meine Frage ersetzt werden ist: Gibt es eine Möglichkeit, zu kombinieren und zu sortieren, diese beiden Arrays in eine neue Array. Schließlich müssen wir den Wert des neuen Arrays vergleichen, um nach dem wiederholten Wert zu suchen, der 0 und 1 ersetzt.
Beispiel: Lassen Sie uns Nummer 19 ansehen;
Unten ist mein Code, um von dezimal zu binär zu konvertieren, aber es wird aufgrund der ungelösten Frage oben nicht erreicht.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
int main(){
int number,number1,y,i,total=0,z,a,ya,a1,m,n,count1=0,count2=0;
int array1[10];
int array2[10];
float x,xa;
printf("Enter the number you want to convert from decimal integer to binary: \n");
scanf(" %d",&number1);
number = number1;
x = log2f(number1);
y = floor(x);
while(y!=0){
for (m=0;m<=100;m++){
x = log2f(number1);
y = floor(x);
number1 = number1 - pow(2,y);
//array1 = (int *)malloc(y * sizeof(int));
array1[m] = y;
count1 += 1;
if (number1==0){
break;
}
}
}
x = log2f(number);
y = floor(x);
for (i=0;i<=y;i++){
z = pow(2,i);
total += z;
}
a = total - number;
a1=a;
xa = log2f(a);
ya = floor(xa);
while(ya!=0){
for (n=0;n<=100;n++){
xa = log2f(a);
ya = floor(xa);
a = a - pow(2,ya);
array2[n] = ya;
count2 += 1;
if (a==0){
ya = 0;
break;
}
}
}
Sie zeigen 'array1 = {4 , 1,0}; array2 = {3,2}; newarray = {4,3,2,1,0}; expectedoutput = {1 0 0 1 1}; '- aber Sie können' expectedoutput' nicht aus 'newarray' erstellen, weil Sie nicht wissen, ob die 4 eine 1 oder 0 sein soll, ohne woanders hin zu suchen 'array1' und' array2') für die Information. Vielleicht sollten Sie negative Zahlen in "newarray" für Null-Bits und positive Zahlen für ein Bit aufzeichnen und nach Absolutwert sortieren. Das führt dann zu einem Problem der negativen Null; vielleicht nummerieren Sie die Bits von 1, damit es kein Problem ist? –
Viele Möglichkeiten, es zu tun.Eine besteht darin, eine Struktur aufzubauen, die aus einem Wert plus einer 1 oder 0 Markierung besteht, die anzeigt, aus welcher Teilmatrix das Datum stammt. Ein anderer besteht darin, die Arrays unabhängig voneinander zu sortieren und dann zusammenzuführen. Ein weiteres, summierendes Integers, soll mit zwei multiplizieren, das letzte Bit setzen, sortieren und dann rückgängig machen. –