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

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

Войти
Регистрация
Восстановить пароль
 
 
The SKY
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 27
#1

Перевод массива из char в int - C++

16.06.2014, 00:20. Просмотров 1138. Ответов 20
Метки нет (Все метки)

есть массив символьного типа. нужно перевести его в тип int для того, что бы далее производить над ним действия уже как с цифрами. как это сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2014, 00:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перевод массива из char в int (C++):

Перевод элементов массива char в int - C++
Задача о золотом песке. Во входном файле 6 чисел, первые три стоимость за килограмм каждого вида песка, вторые - масса которую вмещает...

Перевод char массива в int массив - C++
Делаю так: int inmas; char outmas; fgets(outmas,40,write); outmas2=atoi(outmas); Пишет что типы несовместимы.

Перевод числа из массива char в целочисельное значение int - C++
Приведу пример: char* pDigit = new char; cin>>pDigit; предположим человек вводит: "432dollars" как в данном случае достать...

Перевод char в int - C++
Доброго времени суток. покопался по схожим темам,но так и не нашёл ответа. На вводе с клвиатуры подаётся char-овский массив сстоящийиз...

Перевод char в int - C++
Доброго времени суток, форумчане:senor:. Начинаю углубляться с++ вместе с заданием по курсовой:) Проблема: Имеется структура, ...

Перевод *char в int[] c++ - C++
Нужно перевести длинное число которое хранится в виде "+/-324354365654656" в char* в массив int. Нулевой элемент массива знак. Как...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.06.2014, 00:22 #2
Цитата Сообщение от The SKY Посмотреть сообщение
как это сделать?
Зачем? Код символа - это тоже число (однобайтовое). Какие действия хотите производить?
The SKY
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 27
16.06.2014, 00:31  [ТС] #3
Вывести в файл количество четных чисел, расположенных в массиве между первым положительным и последним отрицательным числами в массиве.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.06.2014, 00:34 #4
Цитата Сообщение от The SKY Посмотреть сообщение
Вывести в файл количество четных чисел, расположенных в массиве между первым положительным и последним отрицательным числами в массиве.
Каким чудом, в это задание, залетел символьный массив?
The SKY
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 27
16.06.2014, 00:42  [ТС] #5
Вот задание целиком.

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


я в программе считала данные в символьный массив, и думала как-нибудь его преобразовать.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.06.2014, 00:48 #6
Цитата Сообщение от The SKY Посмотреть сообщение
я в программе считала данные в символьный массив
Что мешает считать в массив int?

Добавлено через 46 секунд
Содержимое файла покажите.

Добавлено через 41 секунду
И свою программу.
The SKY
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 27
16.06.2014, 00:56  [ТС] #7
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
int main()
{
    setlocale(0, "");
    int n;
    cin >> n;
    std::cout << "Enter file name ";
    
    char filename[21] = { 0 };
    std::cin >> filename;
    
    ifstream istr;
    istr.open(filename);
 
    if (!istr)
    {
        perror("File don't open!\n");
    }
    char * buf = new char[n];
    while (!istr.eof())
    {
        istr.getline(buf, 100, ' ');
        cout << buf << " ";
    }
 
    
    
    int N = 0;
    for (int i = n - 1; i >= 0; i--)
    {
        if (buf[i]<0)
        {
            N = i;
            break;
        }
    }
    cout << "Nomer elementa:" << N;
 
 
    int N1 = 0;
    for (int i = 0; i <n; i++)
    {
        if (buf[i]>0)
        {
            N1 = i;
            break;
        }
    }
    cout << "Nomer elementa:" << N1;
 
    int s = 0, a1 = 0;
    if (N > N1)
    {
        for (int i = N1; i <N; i++)
        {
            if (buf[i] % 2 == 0) a1 = i;
            s = s + a1;
        }
    }
    cout << s; 
 
    int a2;
    if (N1 > N);
    {
        for (int i = N; i <= N1; i++)
        {
            if (buf[i] % 2 == 0)  a2 = i;
            s = s + a2;
        }
    
        
        
        _getch();
    
 
 
 
 
    std::cout << "Enter file name: ";
    char filename1[21] = { 0 };
    std::cin >> filename1;
 
    ofstream fscanf(filename1);
    if (!fscanf) {
        cout << "File" << filename1;
        cout << "could be opend.";
        return -1;
    }
    cout << "File" << filename1 << "was opened.";
    fscanf << s<< endl;
 
    
    fscanf.close();
 
    _getch();
 
    
    return 0;
    
}
Добавлено через 1 минуту
содержимое файла может быть любое. например.
1 2 -5 8 -6 2 9
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.06.2014, 00:57 #8
???
Цитата Сообщение от alsav22 Посмотреть сообщение
Содержимое файла покажите.
The SKY
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 27
16.06.2014, 01:02  [ТС] #9
файл текстовый должен быть. и в нем числа.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.06.2014, 01:03 #10
Цитата Сообщение от The SKY Посмотреть сообщение
файл текстовый должен быть. и в нем числа.
Я понимаю. Содержимое файла, с которым будет работать ваша программа, покажите.
The SKY
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 27
16.06.2014, 01:11  [ТС] #11
1
-2
3
2
2
-5
-10
2
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.06.2014, 01:15 #12
Цитата Сообщение от alsav22 Посмотреть сообщение
Что мешает считать в массив int?
Используя оператор >> ?
The SKY
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 27
16.06.2014, 01:25  [ТС] #13
может и ничего не мешает. я только начала изучать эту тему и еще не совсем разобралась.

не могли бы вы написать часть этой программы так, чтобы считать данные в целочисленный массив.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.06.2014, 02:46 #14
Если следовать логике вашей программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    setlocale(0, "");
    int n;
    cin >> n;
    std::cout << "Enter file name ";
    
    char filename[21] = { 0 };
    std::cin >> filename;
    
    ifstream istr;
    istr.open(filename);
 
    if (!istr)
    {
        perror("File don't open!\n");
    }
    int * buf = new int[n];
    int i = 0;
    while (istr >> buf[i])
        ++i;
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 666
16.06.2014, 02:56 #15
The SKY,
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
int main()
{
    setlocale(0, "");
    int n;
    cin >> n;
    std::cout << "Enter file name ";
    
    char filename[21] = { 0 };
    std::cin >> filename;
    
    ifstream istr;
    istr.open(filename);
 
    if (!istr)
    {
        perror("File don't open!\n");
    }
    int * buf = new char[n];
    
    for(int i = 0;i < n;i++)
        istr << buf[i] << " ";
 
    
    
    int N = 0;
    for (int i = n - 1; i >= 0; i--)
    {
        if (buf[i]<0)
        {
            N = i;
            break;
        }
    }
    cout << "Nomer elementa:" << N;
 
 
    int N1 = 0;
    for (int i = 0; i <n; i++)
    {
        if (buf[i]>0)
        {
            N1 = i;
            break;
        }
    }
    cout << "Nomer elementa:" << N1;
 
    int s = 0, a1 = 0;
    if (N > N1)
    {
        for (int i = N1; i <N; i++)
        {
            if (buf[i] % 2 == 0) a1 = i;
            s = s + a1;
        }
    }
    cout << s; 
 
    int a2;
    if (N1 > N);
    {
        for (int i = N; i <= N1; i++)
        {
            if (buf[i] % 2 == 0)  a2 = i;
            s = s + a2;
        }
    
        
        
        _getch();
    
 
 
 
 
    std::cout << "Enter file name: ";
    char filename1[21] = { 0 };
    std::cin >> filename1;
 
    ofstream fscanf(filename1);
    if (!fscanf) {
        cout << "File" << filename1;
        cout << "could be opend.";
        return -1;
    }
    cout << "File" << filename1 << "was opened.";
    fscanf << s<< endl;
 
    
    fscanf.close();
 
    _getch();
 
    
    return 0;
    
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2014, 02:56
Привет! Вот еще темы с ответами:

Перевод из char в int - C++
нужно перевести из char в int, способ перевода следующий: &quot;значение цифры равно значению ее символа в таблице символов компьютера...

Перевод из char в int - C++
Подскажите пожалуйста! У меня имеется массив символов, то бишь строка. Я хочу преобразовывать каждый символ строки в int. Int k; ...

Перевод из int в char - C++
Пытаюсь перевести число int в строку char. На экран постоянно выводит какие-то иероглифы. Не могли бы вы ОБЪЯСНИТЬ почему так? Код мое...

Массив char + перевод в int - C++
Нужно создать цикл в котором при вводе с клавиатуры символа в 16ричной системе (0-F) это число: 1. Переводилось в 10-ю систему счисления,...


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

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

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