Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.58/50: Рейтинг темы: голосов - 50, средняя оценка - 4.58
10 / 10 / 2
Регистрация: 16.08.2009
Сообщений: 418
1

Как преобразовать часть массива char в double

10.08.2010, 07:07. Просмотров 10321. Ответов 7
Метки нет (Все метки)

есть большой массив char
в нем есть несколько элементов которые нужно преобразовать в число типа double

например

C++
1
2
3
4
5
char X[100];
 
X[20]='0';
X[21]='.';
X[22]='5';
нужно преобразовать эти три элемента массива char в число 0.5 и записать в переменную типа double

Как можно это сделать ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.08.2010, 07:07
Ответы с готовыми решениями:

Как преобразовать long double в char[]?
Приветствую. Подскажите пожалуйста, как преобразовать long double в в тип char? До указателей по...

Как преобразовать массив char в число double?
Например: char a=0.25 в double b=0.25

Как преобразовать дробную часть числа типа double в int
Есть дробное число, например Z = 123,456 нужно разбить его на два целых числа int I = 123 int...

Преобразовать char* в массив double
Здравствуйте, задача состоит в следующем : Изначально нам дан массив double, который нужно...

7
3073 / 2394 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
10.08.2010, 08:13 2
Вытащить нужные кусок в отдельную строку и преобразовать в число, допустим функцией atof().
2
10 / 10 / 2
Регистрация: 16.08.2009
Сообщений: 418
10.08.2010, 08:25  [ТС] 3
отвечу сам себе чтоб не забыть как это делаеться

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
char X[100];
char Y[4]
 
X[20]='0';
X[21]='.';
X[22]='5';
 
Y[0]=X[20];
Y[1]=X[21];
Y[2]=X[22];
Y[3]=0;
 
int a = atoi(Y);
0
Мат в 32 хода
236 / 171 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
10.08.2010, 08:29 4
nill, а почему в твоём примере ты используешь atoi а не atof? (atoi для int, atof для double).
1
3073 / 2394 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
10.08.2010, 08:38 5
В ручную посимвольно копировать не очень то удобно. Можно воспользоваться специальными функциями
C++
1
strncpy(Y, (X+i), len); // i - индекс начального символа, len - длина числа.
1
10 / 10 / 2
Регистрация: 16.08.2009
Сообщений: 418
10.08.2010, 08:57  [ТС] 6
nikkka,
точно ошибся


kazak,
А откуда нам известно значение len ?
или это просто длинна массива Y в который копируем то есть 4 в моем примере ?
0
Мат в 32 хода
236 / 171 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
10.08.2010, 09:05 7
Цитата Сообщение от nill Посмотреть сообщение
А откуда нам известно значение len ?
В вашем примере это очень легко узнать. Можно просто создать такой цикл:
C++
1
2
3
4
5
6
int i=0;
while(x[i+20]!='\0') //или просто while(x[i]) - компилятор воспринемает их одинаково
{
    y[i]=x[i+20];
    i++;
}
Добавлено через 57 секунд
можно так. а можно в этот цикл использовать как счётчик, а потом прописать strncpy(Y, (X+i), len);
1
3073 / 2394 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
10.08.2010, 09:09 8
Я предположил, что длина чисел извнстна.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.08.2010, 09:09

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Преобразовать double в строковое представление в char
Есть ли метод который конвертирует double в сhar как число а не ASCII код? т.е. чтоб double i = 1...

Ошибка С2664: невозможно преобразовать параметр 1 из 'double' в 'const char *'
Ошибка C2664: невозможно преобразовать параметр 1 из 'double' в 'const char *' Visual 2008....

Как достать из массива char переменные типа double, int, bool
Имеется массив char temp. в этот массив записана переменная double (начинается ,например, с temp),...

Не могу преобразовать тип char в тип double
Вся загвоздка в str1 и str2; #include "stdafx.h" #include "conio.h" #include"stdlib.h"...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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