Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2009, 22:02   #1
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
Смущение Простая прога с цыклом на с++

Приветик всем. Помогите пожалуйста с написанием программы которая должна переводить числа с двоичной у восьмеричную систему чисел. Я написала прогу очень легко и просто но она организована через много if-ов и главная проблема в том что она может перевести только одно число ((. Помогите или подскажите как написать универсальною и несложною. Вот таблица :
Изображения
Тип файла: jpg capture_04102009_205556.jpg (15.5 Кб, 161 просмотров)
Если помогла нажмите на весы
Olya90 вне форума Ответить с цитированием
Старый 11.04.2009, 00:30   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Ну я вот такую написал:
Код:
#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;

int main()
{
string mas[8];
string binNumber,octNumber,buf;
int i,k,n=0;

mas[0]="000";
mas[1]="001";
mas[2]="010";
mas[3]="011";
mas[4]="100";
mas[5]="101";
mas[6]="110";
mas[7]="111";

cout<<"Enter bin-number: ";
cin>>binNumber;

buf="000";
for(i=binNumber.length()-1,k=2,n=0;i>=0;i--)
 {
  buf[k--] = binNumber[i];
  if(k==-1)
   {
    for(int j=0;j<8;j++)
      if(mas[j]==buf)
      {
       octNumber[n++] = (char)(j+48);
       break;
      }
    buf="000";
    k=2;
   }
 }

if(k!=2)
 for(int j=0;j<8;j++)
   if(mas[j]==buf)
      {
       octNumber[n++] = (char)(j+48);
       break;
      }

for(i=n-1;i>=0;i--)
 cout<<octNumber[i];

getch();
return 0;
}
Цитата:
и главная проблема в том что она может перевести только одно число ((
Не понял, что это значит.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 11.04.2009, 14:55   #3
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
По умолчанию

Цитата:
Не понял, что это значит.
Например если юзер введет 00000111 то должно вывести ответ: 07
Если помогла нажмите на весы
Olya90 вне форума Ответить с цитированием
Старый 11.04.2009, 15:05   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
то должно вывести ответ: 07
Ответ будет 007

А вообще лучше отсекать лишние нули слева.
Это можно сделать, добавив сразу после ввода исходного числа:
Код:
while(binNumber[0]=='0' && binNumber.length()>3)
 binNumber = binNumber.substr(1,binNumber.length());
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 11.04.2009, 19:22   #5
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
По умолчанию

Всеравно есть глюки (( например 01011111 = виводит 137 (( а должно 517
Если помогла нажмите на весы
Olya90 вне форума Ответить с цитированием
Старый 11.04.2009, 19:31   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Всеравно есть глюки (( например 01011111 = виводит 137 (( а должно 517
Это с чего вы такое взяли?
Откройте виндовый калькулятор, перейдите в bin-режим и введите это число. А потом переведите в oct.

Все правильно.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с Цыклом Dzib Помощь студентам 4 24.10.2008 16:39
прога и чюжая прога benjaminfran Общие вопросы Delphi 5 28.03.2008 15:07
Не простая задача !!! MaxZoa Microsoft Office Excel 2 06.03.2008 18:07
Срочно требуется простая прога на Delphi c подкл. DLL Harding Общие вопросы Delphi 1 25.06.2007 15:35