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

Преобразовать сроку чисел CHAR в массив чисел типа int - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 47, средняя оценка - 4.77
Jekanchik
 Аватар для Jekanchik
2 / 2 / 0
Регистрация: 10.10.2009
Сообщений: 23
10.10.2009, 18:37     Преобразовать сроку чисел CHAR в массив чисел типа int #1
Помогите реализовать идею...
Прегнать введённую сроку чисел char в массив int ...
чтоб элемент char str[i] соответсвовал int mas[i]....

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
 
int main()
{
char chi[100];
int i,n,*mas;
cout<<"Vvedite chislo 1 = ";cin>>chi;
n=strlen(chi);
mas=new int[n];
 
for(i=0; i<n; i++){ { mas[i]=atoi(chi[i]);} }                                     
 
for (i=0; i<n; i++)
{ printf("%3d",mas[i]);}
getch();
}
не знаю как обойти ошибку....
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2009, 18:37     Преобразовать сроку чисел CHAR в массив чисел типа int
Посмотрите здесь:

C++ не получается преобразовать дату(как массив типа char) в число...
C++ Передать массив элементов(типа int) объекта, в функцию из массивов(типа int)
C++ 8-и значное число типа int преобразовать в строчку char\string
C++ Динамический массив из n чисел типа int.
C++ Написать класс сверхбольших целых чисел, использовать массив типа char
Преобразовать массив с типом char в массив с типом int C++
Преобразовать одномерный массив вещественных случайных чисел в массив целых чисел C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HIMen
 Аватар для HIMen
4109 / 1358 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
10.10.2009, 18:49     Преобразовать сроку чисел CHAR в массив чисел типа int #2
C++
1
for(i=0; i<n; i++){ { mas[i]=(chi[i])-48;} }
Jekanchik
 Аватар для Jekanchik
2 / 2 / 0
Регистрация: 10.10.2009
Сообщений: 23
10.10.2009, 18:53  [ТС]     Преобразовать сроку чисел CHAR в массив чисел типа int #3
Спасибо работает))) а что есть 48 ...это разница в памяти?
HIMen
 Аватар для HIMen
4109 / 1358 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
10.10.2009, 18:56     Преобразовать сроку чисел CHAR в массив чисел типа int #4
нет, char это тоже целочисленный тип, он хранит не символ, а его код.
нулю соответсвует 48, 1 - 49, и т.д. 9 - 57.
поэтому вычитаем 48
Вложения
Тип файла: pdf ascii.pdf (339.7 Кб, 860 просмотров)
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
10.10.2009, 18:58     Преобразовать сроку чисел CHAR в массив чисел типа int #5
0. а вдруг ввели не число?
1. atoi() принимает в качестве параметра указатель на строку символов, а ты ей что даешь?
CAYOT
0 / 0 / 0
Регистрация: 10.10.2009
Сообщений: 26
10.10.2009, 18:58     Преобразовать сроку чисел CHAR в массив чисел типа int #6
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
 
void main()
{
    char chi[256];
    int n,mas;
 
    cout<<"Vvedite chislo 1 = ";
    cin>>chi;
    
    short numSize=strlen(chi);
 
    int*p=new int[numSize];
 
    
    char ch;
    
    for(int i=0;i<numSize;i++)
    {
        ch=*(chi+i);
        p[i]=atoi(&ch);
    }
 
    cout<<"int :";
    for(i=0;i<numSize;i++)
        cout<<p[i];
 
    cout<<endl;
 
 
    cout<<"char :";
        cout<<chi;
 
    cout<<endl;
 
    
    system("pause");
}
ili tak.
Jekanchik
 Аватар для Jekanchik
2 / 2 / 0
Регистрация: 10.10.2009
Сообщений: 23
10.10.2009, 19:01  [ТС]     Преобразовать сроку чисел CHAR в массив чисел типа int #7
Во я дерево....я проспал эту лекцию...спасибо...и за таблицу тоже...

Добавлено через 1 минуту
Цитата Сообщение от novi4ok Посмотреть сообщение
0. а вдруг ввели не число?
1. atoi() принимает в качестве параметра указатель на строку символов, а ты ей что даешь?
у меня по умолчанию вводить надо числа поэтому ввод букв исключен..
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
10.10.2009, 19:03     Преобразовать сроку чисел CHAR в массив чисел типа int #8
Цитата Сообщение от CAYOT Посмотреть сообщение
C++
1
        p[i]=atoi(&ch);
ili tak.
и не так. вообрази себе, что в памяти, следующей за ch находится нечто вроде "0х3234с4..."? тогда, если твоя ch будет иметь значение, например, '3', ф-я вернет число 324
CAYOT
0 / 0 / 0
Регистрация: 10.10.2009
Сообщений: 26
10.10.2009, 19:09     Преобразовать сроку чисел CHAR в массив чисел типа int #9
ну я считал что в матрице чаров нету ничего кроме цифр...

Добавлено через 1 минуту
pri'
Vvedite chislo 1 = 0x234c234
int :002340234
char :0x234c234
Для продолжения нажмите любую клавишу . . .

Добавлено через 1 минуту
vixodit v atoi est kakoito if..chto esli eto ne cifra ona preobrazueca v 0..
Jekanchik
 Аватар для Jekanchik
2 / 2 / 0
Регистрация: 10.10.2009
Сообщений: 23
10.10.2009, 19:10  [ТС]     Преобразовать сроку чисел CHAR в массив чисел типа int #10
Всем спасибо всё работает....будут проблемки отпишусь...
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
10.10.2009, 19:10     Преобразовать сроку чисел CHAR в массив чисел типа int #11
Цитата Сообщение от CAYOT Посмотреть сообщение
ну я считал что в матрице чаров нету ничего кроме цифр...
какая "матрица чаров"? вы определили переменную ch где-то в памяти. за ней непосредственно тоже что-то в памяти находится. вы не знаете что.
CAYOT
0 / 0 / 0
Регистрация: 10.10.2009
Сообщений: 26
10.10.2009, 19:16     Преобразовать сроку чисел CHAR в массив чисел типа int #12
ch eto
char ch;
esli vvodit toko cifri vse pravilno..scopirui i ubedis sam!.
ia ojidayu cifru tipa char...esli eto ne cifra to avtomatom atoi menyaet ee na 0...
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
10.10.2009, 20:31     Преобразовать сроку чисел CHAR в массив чисел типа int #13
Цитата Сообщение от CAYOT Посмотреть сообщение
ch eto
char ch;
esli vvodit toko cifri vse pravilno..scopirui i ubedis sam!.
ia ojidayu cifru tipa char...esli eto ne cifra to avtomatom atoi menyaet ee na 0...
уже дважды объяснил. вроде "на пальцах". попробую еще раз, если не поймешь, больше не буду пытаться.

это не имеет никакого отношения к тому, что введут.

ты пишешь:
C++
1
char ch;
потом -
C++
1
p[i]=atoi(&ch);
и ф-я пытается преобразовать в целое нечто, лежащее по адресу переменной ch. а там находится переменная ch длиной один байт, а за ней - что-то, чего ты не знаешь. а в этой памяти вполне могут содержаться значения, соответствующие символам цифр. понятно?

если уже хочешь так действовать, то определи массив длиной два, и во второй забей ноль (или просто нецифру), а в первый - помещай то что хочешь преобразовать в целое.

C++
1
2
3
4
5
char ch[2];
*(ch+1) = '\x00';
...
*ch=*(chi+i);
p[i]=atoi(ch);
тогда все будет работать "по-честному".
CAYOT
0 / 0 / 0
Регистрация: 10.10.2009
Сообщений: 26
10.10.2009, 21:48     Преобразовать сроку чисел CHAR в массив чисел типа int #14
a mne vooshe ne interesuet chto za moim peremennim...f-ya pralno smotrit vnutri tolko etoi peremennoi..ia uje 5 minut probuyu oshibku poluchit nekak..
Jekanchik
 Аватар для Jekanchik
2 / 2 / 0
Регистрация: 10.10.2009
Сообщений: 23
11.10.2009, 12:34  [ТС]     Преобразовать сроку чисел CHAR в массив чисел типа int #15
Еще такая вот проблема сложить эти два массива по элементам и записать в 3-ий
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
 
int main()
{
char chi[300],chi2[300];int i,j,k,n,m; float a;int mas[300];
int sum;
int kol;
cout<<"Vvedite chislo 1 = ";cin>>chi;   //vvod pervogo chisla
n=strlen(chi);
for(i=0; i<n; i++)       // preobrazovanie
{ mas[i]=(chi[i])-48;}
 
 for (i=0;n-1-i>i;i++)     // perevorot massiva
      {mas[n-1-i]=mas[i]+mas[n-1-i];
       mas[i]=mas[n-1-i]-mas[i];
       mas[n-i-1]=mas[n-1-i]-mas[i];}
 
int mas2[300];
cout<<"Vvedite chislo 2 = ";cin>>chi2;       // vvod vtorogo
m=strlen(chi2);
                               //preobrazovanie
for(j=0; j<m; j++)
{ mas2[j]=(chi2[j])-48;}
 
for (j=0;m-1-j>j;j++)     // perevorot massiva
      {mas2[m-1-j]=mas2[j]+mas2[m-1-j];
       mas2[j]=mas2[m-1-j]-mas2[j];
       mas2[m-j-1]=mas2[m-1-j]-mas2[j];}
 
int mas3[20];
for (k=0; k<n; k++)
    {
    mas3[k]=mas[i]+mas2[j];
    kol++;
   if (mas3[k]>10) {mas3[k]=fmod(mas3[k],10); mas3[k+1]=mas3[k+1]+1;}
      cout<<mas3[k];
     }
 
cout<<"\n"<<"Pervoe "<<"\n";
for (i=0; i<n; i++)
{ printf("%1d",mas[i]); }
cout<<"\n"<<"Vtoroe "<<"\n";
for (j=0; j<m; j++)
{ printf("%1d",mas2[j]);}
cout<<"\n";
 
//for (k=0; i<kol; k++)
//{ printf("%3d",mas3[k]); }
cout<<"\n";
getch();
}
где я опять забочинил
Rififi
 Аватар для Rififi
2332 / 1047 / 43
Регистрация: 03.05.2009
Сообщений: 2,656
11.10.2009, 12:54     Преобразовать сроку чисел CHAR в массив чисел типа int #16
Jekanchik,

[I]Помогите реализовать идею...
Прегнать введённую сроку чисел char в массив int ...
чтоб элемент char str[i] соответсвовал int mas....

char ch[10];
int arr[10];
std::copy(ch, ch+10, arr);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2009, 14:41     Преобразовать сроку чисел CHAR в массив чисел типа int
Еще ссылки по теме:

Передать массив чисел типа Int функции C++
C++ Как преобразовать строку char в массив int?
C++ Определите объединения, элементами которого являются массивы из трех чисел типа long и с шести чисел типа int
C++ Запишите шесть строк, состоящих из двух случайных чисел типа int, которые не больше 10 и трех случайных чисел
C++ Перевести строку типа char в массив типа int

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

Или воспользуйтесь поиском по форуму:
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
11.10.2009, 14:41     Преобразовать сроку чисел CHAR в массив чисел типа int #17
Цитата Сообщение от CAYOT Посмотреть сообщение
a mne vooshe ne interesuet chto za moim peremennim...f-ya pralno smotrit vnutri tolko etoi peremennoi..ia uje 5 minut probuyu oshibku poluchit nekak..
ф-я "смотрит", начиная с адреса этой переменной, и пока не встретит нецифру. попробуй вот так, и увидишь, куда ф-я "смотрит":

C++
1
2
3
4
5
6
7
8
9
10
11
    struct s {
        char _ch;
        char _ch2;
    };
 
    s ss;
    ss._ch = '3';
    ss._ch2 = 'a';
    int a = ::atoi (&ss._ch);
    ss._ch2 = '5';
    int b = ::atoi (&ss._ch);
здесь ss._ch - тоже переменная типа char. я ее вставил в структуру, чтобы иметь возможность определять, что находится в памяти за этой переменной. посмотри какие значения получат a, b. может поймешь наконец.
Yandex
Объявления
11.10.2009, 14:41     Преобразовать сроку чисел CHAR в массив чисел типа int
Ответ Создать тему
Опции темы

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