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

Преобразовать строку->число->строку - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
auqarisu
5 / 5 / 0
Регистрация: 11.04.2011
Сообщений: 77
21.06.2011, 16:30     Преобразовать строку->число->строку #1
Всем доброго времени суток! Скоро будет экзамен по программированию.С++ начали изучать в конце семестра. В билете задача написать программу на с++ (мы пользуемся Borland C++ 3.1). Программа должна состоять из 3 функций:
1)-сама программа т.е. main;
2) функция которая переводит дробную из формата строка(исп. массив символов) в формат вещественный или целый;
3) функция переводящая результат 2 функции обратно т.е. из целочисленного или вещественного в строку
Использовать только библиотеки iostream.h и stdlib.h
и вывести на экран 3 столбика: 1ый входная строка 2ой выходная веществ. или целочис. 3) выходная строка
Помоги пожалуйста! Трудно понять язык (до этого изучали паскаль), напишите пожалуйста программу которая переведет допустим 0,101 в 2сс в 10сс. Т.е. результат должен быть таким:
0,101 0,625 0,101 вот такую строку программа должна показать на экране
входная строка и выходная (т.е. 1 и 3 столбик) не должны сильно отличаться!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,217
Завершенные тесты: 1
21.06.2011, 16:39     Преобразовать строку->число->строку #2
преобразовать:
int
строку->число atoi()
число->строку itoa()

float
строку->число atof()
число->строку wsprintf(), например
auqarisu
5 / 5 / 0
Регистрация: 11.04.2011
Сообщений: 77
21.06.2011, 16:48  [ТС]     Преобразовать строку->число->строку #3
Нельзя использовать библиотечные функции, вся работа должна быть основана на работе с масивами символов(выступающих в качестве строк)
Петррр
 Аватар для Петррр
5916 / 3353 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
21.06.2011, 16:57     Преобразовать строку->число->строку #4
Числа должны быть вещественными?
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,217
Завершенные тесты: 1
21.06.2011, 16:59     Преобразовать строку->число->строку #5
auqarisu, извиняюсь не дочитал задаиие. А в чем собственно проблемы? Есть свои наработки? Показывайте.
Dmitry_gdv
 Аватар для Dmitry_gdv
64 / 64 / 5
Регистрация: 18.03.2010
Сообщений: 351
21.06.2011, 17:09     Преобразовать строку->число->строку #6
да уж какие тут могут быть наработки?
я же говорю - сий форум превратился из форума для начинающих программистов в форум для
студентов - попрошаек

вобщем не вижу смысла повторяться ...
auqarisu
5 / 5 / 0
Регистрация: 11.04.2011
Сообщений: 77
21.06.2011, 17:31  [ТС]     Преобразовать строку->число->строку #7
Да уж простите меня, но мне надо было сдавать 2е курсовые на паскале, на с++ времени было мало... Трудно его понять....
Наброски есть:
входные данные константы (задаются в начале, забыл сказать) т.е. на входе мы имеем массив символов mas[5]={'0','.','1','0','1'} //извиняйте если неправильно пишу операторы и т.д. и т.п., синтаксис языка пока лучше не изучен.
Я думаю обрабатывать этот массив в цикле, как то удалить или переписать в другой массив дробную часть, как нибудь так:
for(i=1,i++)
{
mas1[i]=mas[i];
} далее перевести это в тип вещественный.(в зависимости от задания тип либо float либо int) и работать с ним...
Dmitry_gdv
 Аватар для Dmitry_gdv
64 / 64 / 5
Регистрация: 18.03.2010
Сообщений: 351
21.06.2011, 17:48     Преобразовать строку->число->строку #8
ну да, тебе однозначно тогда надо всё это дело прогнать через цикл
в цикле вытащить интовый код каждого символа
и преобразовать эти коды в инты
после чего "сцепить" вместе инты - и получишь число

а потом проделать всё с точностью до наоборот
auqarisu
5 / 5 / 0
Регистрация: 11.04.2011
Сообщений: 77
21.06.2011, 17:51  [ТС]     Преобразовать строку->число->строку #9
А вот как преобразовать массив символов в число я думаю так:
после того как выделил дробь и работаем с ней т.е. mas1=101
int i;
float r=0;
for(i=0,i<2,i++)
{
if (mas1[i]='1') r=r+1/((i+1)*10);
}
если я правильно рассчитал мы должны получить 1/1*10+0/2*10+1/3*10=0,1+0+0,001=0,101
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 469
21.06.2011, 18:04     Преобразовать строку->число->строку #10
Wolfram Alpha стала популярной... и самые продвинутые научились ей пользоваться...

auqarisu, тебе только для этого числа надо?
возможны другие входные данные?
например 10.101
auqarisu
5 / 5 / 0
Регистрация: 11.04.2011
Сообщений: 77
21.06.2011, 18:07  [ТС]     Преобразовать строку->число->строку #11
В билете не будут смешанных типов, будут только либо дроби(пример 0,10011) либо целые(1010), я хочу понять смысл как написать программу на том примере 0,101...
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 469
21.06.2011, 18:25     Преобразовать строку->число->строку #12
auqarisu, смотри попытаюсь рассказать общий случай для дроби
0.101
нужно отделить целую и дробную часть
0 и 101 - это строки (надеюсь поймешь как из строки сделать число целое, если нет расскажу)
в 101 посчитать кол-во знаков n=3
потом 101/10^n и складываешь целую часть и дробную

получили 0+0.101=0.101

обратно:
нужно использовать преобразование типов int(0.101) если можно ей пользоваться.
если нет то придется делать через циклы.
int(0.101) вернет целую часть числа т.е. 0
дальше 0.101 - int(0.101) = 0.101
честно не знаю как посчитать сколько знаков в числе после запятой, поэтому придется брать старые данные которые были в строке
и потом три раза умножаешь на 10 и записываешь в строку

вообще глупое задание на мой взгляд + несправедливо кому то целые, а кому то дробные
auqarisu
5 / 5 / 0
Регистрация: 11.04.2011
Сообщений: 77
21.06.2011, 18:35  [ТС]     Преобразовать строку->число->строку #13
А можно объяснить как из строки в число? А подсчитать количество символов... в задании нам входные данные даются константами(из это легко определить количество эл-от в дроби или целом), а задачи будут разные могут быть если 10сс целое то перевести в 2сс строку и обратно, мне уловить суть, как это реализовать...

Добавлено через 3 минуты
Мне разобрать пример с 0.101, а другие примеры сам попробую сделать
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 469
21.06.2011, 20:04     Преобразовать строку->число->строку #14
auqarisu, отходил, смотри
C++
1
2
3
4
5
6
7
8
#include "stdio.h"
void main(){
int a;
char b[50];
b[0]='5';
a=b[0]-'0';
printf("%d",a);
}
т.е. из строки в цифру надо вычесть код 0(таблица ASCII)
а если из цифры в строку то прибавить
auqarisu
5 / 5 / 0
Регистрация: 11.04.2011
Сообщений: 77
21.06.2011, 20:16  [ТС]     Преобразовать строку->число->строку #15
А если перевести 0.101, то как будет выглядеть???

Добавлено через 4 минуты
Я вот тут навалял примерно программку, только она в место 0,101(2)=0,625(10) выдает 1,0625(10):
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.h>
#include <stdio.h>
#include <conio.h>
 
char mas[5]={'0','.','1','0','1'};
char mas1[3];
int i,k,n;
float a=1,r=1,res=0;
 
void main(char)
{
 clrscr();
 for(i=0;i<3;i++)
 {
  mas1[i]=mas[i+2];
 }
 
 for(i=0;i<3;i++)
 {
  if (mas1[i]=='1'){
  for(n=0;n<i+1;n++)
   r=r*2;
  }
  res+=1/r;
 }
 cout<<res;
getchar();
}
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 469
21.06.2011, 20:30     Преобразовать строку->число->строку #16
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "stdio.h"
void main(){                     
 
char mas[5]={'0','.','1','0','1'};
char mas1[3];
int i,k,n;
float a=1,r=1,res=0;      
 
for(i=0;i<3;i++)
 {
  mas1[i]=mas[i+2];
 }
 
 res=(mas1[0]-'0')*100+(mas1[1]-'0')*10+mas1[2]-'0';
 res=res/1000;
 printf("%f",res);
}
только это грубо и под определенное число
auqarisu
5 / 5 / 0
Регистрация: 11.04.2011
Сообщений: 77
21.06.2011, 20:32  [ТС]     Преобразовать строку->число->строку #17
В чем недочет программы?

Добавлено через 1 минуту
Лол, поторопился не обновил страницу.
Так можно переделать потом для дугово числа...
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 469
21.06.2011, 20:35     Преобразовать строку->число->строку #18
auqarisu, так тебе можно пользоваться функцией округления числа?
или ты разобрался как из вещественного в строку?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.06.2011, 20:42     Преобразовать строку->число->строку
Еще ссылки по теме:

C++ Как преобразовать шестнадцатеричное число в строку?
C++ Возможно ли преобразовать в число, строку вида:
C++ Преобразовать строку из файла, содержащую запись десятичного числа, в строку с двоичным числом

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

Или воспользуйтесь поиском по форуму:
auqarisu
5 / 5 / 0
Регистрация: 11.04.2011
Сообщений: 77
21.06.2011, 20:42  [ТС]     Преобразовать строку->число->строку #19
нам нельзя пользоваться стандартными функциями работающие со строками

Добавлено через 3 минуты
а пользоваться функцией округления скорей всего да...
Yandex
Объявления
21.06.2011, 20:42     Преобразовать строку->число->строку
Ответ Создать тему
Опции темы

Текущее время: 22:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru