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

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

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

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

30.03.2009, 12:31. Просмотров 5998. Ответов 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++

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

Пожалуйста
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2009, 12:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Строковые типы данных. Обработка строк (C++):

Строковые типы данных - C++
Ввести с клавиатуры строку из 20-ти или меньшего числа символов и найти в строке сумму и количество всех цифр. Язык С++(дано: ввод в Edit1...

Исправить ошибки, строковые типы данных - C++
#include &quot;stdafx.h&quot; #include &lt;string.h&gt; #include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;conio.h&gt; int _tmain(int argc, _TCHAR*...

Разработка приложений, использующих строковые типы данных - C++
Дан текст. Исключить из него символы, расположенные между скобками ‘(‘, ‘)’. Сами скобки тоже должны быть исключены. Предполагается, что...

Строковые типы данных (заменить все прописные (большие) буквы латинского алфавита строчными (маленькими)) - C++
Ввести с клавиатуры строку и заменить все прописные (большие) буквы латинского алфавита строчными (маленькими). Язык С++ (дано Edit1 и...

Типы данных: есть ли универсальный тип, который может заменить все типы данных в Си? - C++
Добрый вечер! Был бы очень признателен, если бы Вы помогли бы мне понять нижеследующие вопросы: 1. Можете ли на понятным для...

Строковые типа данных - 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;
}
1
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 тоже является двоичным и с таким же успехом может быть переведено в восьмеричную систему, просто нужно дописать спереди нули
2
BornLeader
50 / 46 / 1
Регистрация: 16.05.2008
Сообщений: 162
30.03.2009, 17:42 #4
Проверка на валидность здесь довольно формальная, а вот насчет strlen(str) я уже подредактировал
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2009, 17:42
Привет! Вот еще темы с ответами:

Какие типы строк лучше использовать - C++
Недавно начал учить строки и увидел, что в С++, в отличии от Паскаля для каждого типа строк ( я нашёл только char,char*,string ) есть...

типы данных - C++
на Си реализовать: (не С++) построить функцию, возвращающую все байты заданного вещественного х в целом виде. т.е. нам например вводят...

типы данных - C++
уважаемые программисты, как отвести типу char 2 байта? пишу шахматы, 6 фигур, хочу, чтобы каждый бит отводился для определенной фигуры, +...

Типы данных - C++
Мне задали в университете лабораторную работу. Написать программу вычисления среднего массивов типа int,float и complex. Функции,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.03.2009, 17:42
Ответ Создать тему
Опции темы

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