Хорошо, этот вопрос очень специфичен, и я буду кратким. Я пытаюсь преобразовать простой двоичный код из 5 цифр в десятичный, а затем в десятичное число ASCII; Но как-то мой вклад:C++ - простая двоичная двоичная программа ASCII
Тип двоичное число: 10110
Закончено? (y/n): n
Закончено? (y/n): n
Предполагалось, что запрос будет завершен только после запроса другого двоичного числа, а затем покажет предложение в массиве символов, когда я набрал y. Что случилось? Я просто не могу понять, что на самом деле ... Произошло
//main.cpp
#include <iostream>
#include "binconverts.h"
int main(){
using namespace std;
int numBin;
char acabou;
bool breakLoop = false;
int numer = 0;
cout << "Digite um numero binario: ";
cin >> numBin;
for (int a = 0; a < 54; a++){
if (breakLoop == true) break;
binconv.text[a] = binconv.convBin(numBin);
numer++;
cout << "Acabou? (s/n): ";
cin >> acabou;
switch (acabou){
case 'S':
breakLoop == true;
break;
case 's':
breakLoop == true;
break;
case 'n':
breakLoop == false;
break;
case 'N':
breakLoop == false;
break;
default:
breakLoop == false;
break;}
}
for (int b = 0; b < numer; b++){
cout << binconv.text[b];
}
}
//binconverts.h
#pragma once
#include "rick_math.h"
class BINCONV{
public:
int convBin(int);
int setText();
char text[54];
}binconv;
BINCONV::convBin(int n){
int decimal(0), i(0), rem;
while (n != 0)
{
rem = n % 10;
n /= 10;
decimal += rem * maths.poten(2,i);
++i;
}
return decimal + 63;}
в вашей программе, которую вы используете з/п, но выход использует y/n. Пожалуйста, исправьте правильный путь. Спасибо. – Igor
Я удивлен, что он не показывал вам это сообщение 54 раза с 'breakLoop == false;' и другие выражения, подобные этому в вашем блоке переключателя, не являются назначением, а сравниваются. Я думаю, вам нужно 'breakLoop = false' и так далее ... –
BTW, используя' std :: toupper' или 'std :: tolower', уменьшит случаи' switch' на 50%. Примените функцию для преобразования символа в верхний или нижний регистр перед сравнением. –