Zkusil jsem napsat kompletně nový kód, problém mi dělá načítání hodnoty do cislo2 (64. řádek) - hodnoty se načtou, ale jakmile program opustí cyklus, ihned se cislo2[0] a cislo2[1] přepíšou na -8...(strašně moc čísel :D) - čím to může být? Za chvíli mi z toho asi uletí hlava :D
#include<iostream>
#include<string>
using namespace std;
int main(){
string vstup;
cout << "Zadejte dve binarni cisla:" << endl;
getline(cin, vstup);
int delka_vstup = vstup.length();
int mezera = 0;
int delka1 = 0;
int delka2 = 0;
//urcim pocet mezer, osetrim vstup jinych znaku
int i; //adresa mezery
int adresa_posledniho_prvku = delka_vstup-1;
for(int j = 0; j <= adresa_posledniho_prvku; ++j){
if(vstup[j] != ' ' && vstup[j] != '1' && vstup[j] != '0'){
cout << "Nespravny vstup." << endl;
return 0;
}
if(vstup[j] == ' '){
i = j;
++mezera;
}
}
//osetrim pocet mezer
if(mezera != 1){
cout << "Nespravny vstup." << endl;
return 0;
}
//urcim delky poli
int a; //index konce cislo1
for(a = 0; a < i; ++a){
++delka1;
}
--a;
int b; //index konce cislo2
for(b = i+1; b < delka_vstup; ++b){
++delka2;
}
--b;
int max_delka; //delka vetsi ze vstupnich hodnot - pouziju pro alokaci obou poli
if(delka1 > delka2){
max_delka = delka1;
}else{
max_delka = delka2;
}
int *cislo1 = new int [max_delka];
int *cislo2 = new int [max_delka];
//zapisu hodnoty do poli
for(int j = 0; j <= a; ++j){
cislo1[j] = vstup[j]-48;
}
for(int j = i+1; j <= b; ++j)cislo2[j - i+1] = vstup[j]-48;
}
cout << cislo2[0] << cislo2[1] << cislo2[2] << endl;
//zbytek poli vyplnim nulami
for(int j = a+1; j < max_delka; ++j){
cislo1[j] = 0;
}
for(int j = b+1; j < max_delka; ++j){
cislo2[j] = 0;
}
cout << cislo1[0] << cislo1[1] << cislo1[2] << endl;
cout << cislo2[0] << cislo2[1] << cislo2[2] << endl;
int *soucet = new int [max_delka+1];
int bon = 0; //"bonus" pri scitani, prechazejici na dalsi pozici
int c = 0;
for(int j = 0; j < max_delka; ++j){
if(cislo1[j] + cislo2[j] + bon == 0){
soucet[c] = 0;
bon = 0;
}else if(cislo1[j] + cislo2[j] + bon == 1){
soucet[c] = 1;
bon = 0;
}else if(cislo1[j] + cislo2[j] + bon == 2){
soucet[c] = 0;
bon = 1;
}else if(cislo1[j] + cislo2[j] + bon == 3){
soucet[c] = 1;
bon = 1;
}
++c;
}
int zkouska = 0;
cout << "Soucet: ";
for(int j = 0; j <= max_delka; --j){
if(soucet[i] == 1){ //kontrola 1 mezery
zkouska = 1;
}
if(zkouska == 1){
cout << soucet[j];
}
if(i == 0 && zkouska == 0){
cout << 0;
}
}
cout << endl;
delete[] cislo1;
delete[] cislo2;
delete[] soucet;
return 0;
}