Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 47, средняя оценка - 4.83
Best-pm07
..:::BesT:::..
7 / 7 / 1
Регистрация: 19.03.2009
Сообщений: 195
#1

Строковые типы данных. Обработка строк - C++

30.03.2009, 12:31. Просмотров 5949. Ответов 3
Метки нет (Все метки)

Помогите написать вот такую программу:

Системы исчисления. Вводится строка символов. Если она является изображением целого числа в двоичной системе исчисления, то вывести его представление на восьмеричной, иначе выдать сообщение о некорректном введении.
Примечание. Использовать промежуточный перевод в десятичную систему исчисления нельзя.

P. S. Писать лучше попроще

Добавлено через 45 минут 22 секунды
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Program www;
uses crt;
const masBin: array[0..7] of string[3]=
('000','001','010','011',
'100','101','110','111');
var c8,c2,v,d:string;
i:integer;
begin
write('Двоичная: ');read(c2);
c8:='';
for i:=1 to length(c2) mod 3 do c2:='0'+c2;
while length(c2) > 2 do
begin
v:=copy(c2,length(c2)-2,3);
i:=0;
while v<>masBin[i] do inc(i);
str(i,d);
c8:=d+c8;
delete(c2,length(c2)-2,3);
end;
write('Восьмеричная: ',c8);
readln;
end.
Вот готова программа на Pascal, но нужна ещё на C++

Кому не сложно, перепишите её на С++

Пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2009, 12:31     Строковые типы данных. Обработка строк
Посмотрите здесь:
Строковые типы данных C++
C++ Исправить ошибки, строковые типы данных
Разработка приложений, использующих строковые типы данных C++
C++ Строковые типы данных (заменить все прописные (большие) буквы латинского алфавита строчными (маленькими))
Строковые типа данных C++
C++ Какие типы строк лучше использовать
C++ Типы данных
типы данных C++
Типы данных C++
Типы данных C++
C++ Типы данных
C++ Типы данных

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BornLeader
50 / 46 / 1
Регистрация: 16.05.2008
Сообщений: 162
30.03.2009, 17:04     Строковые типы данных. Обработка строк #2
Ну примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
using namespace std;
void BinToOct(const char* str)
{
cout << "Binary: " << str << endl;
cout << "Octal: ";
const int size = 8;
char* masBin[size]={"000","001","010","011","100","101","110","111"};
size_t len = strlen(str);
if((len%3)==0)
{
for(size_t i=0;i<len;i+=3)
for(size_t j=0;j<size;j++)
if(strncmp(masBin[j],&str[i],3)==0)
{
cout << j;
break;
}
cout << endl;
}
else
cerr << "Input error" << endl;
}
int main(void)
{
 BinToOct("010101110");
return 0;
}
Haster
инженер-системотехник
109 / 108 / 2
Регистрация: 10.03.2009
Сообщений: 533
30.03.2009, 17:10     Строковые типы данных. Обработка строк #3
BornLeader, есть пара замечаний по коду
C++
1
2
3
size_t len = strlen(str);
if((strlen(str)%3)==0)
{
первая строка тут не нужна, ибо в if Вы опять вызываете функцию strlen(str)
И почему если длина строки не кратна 3, то это ошибка ввода?
По мне так число 00101 тоже является двоичным и с таким же успехом может быть переведено в восьмеричную систему, просто нужно дописать спереди нули
BornLeader
50 / 46 / 1
Регистрация: 16.05.2008
Сообщений: 162
30.03.2009, 17:42     Строковые типы данных. Обработка строк #4
Проверка на валидность здесь довольно формальная, а вот насчет strlen(str) я уже подредактировал
Yandex
Объявления
30.03.2009, 17:42     Строковые типы данных. Обработка строк
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru