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

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

Восстановить пароль Регистрация
 
 
The SKY
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 27
16.06.2014, 00:20     Перевод массива из char в int #1
есть массив символьного типа. нужно перевести его в тип int для того, что бы далее производить над ним действия уже как с цифрами. как это сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2014, 00:20     Перевод массива из char в int
Посмотрите здесь:

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

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


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

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

Добавлено через 41 секунду
И свою программу.
The SKY
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 27
16.06.2014, 00:56  [ТС]     Перевод массива из char в int #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
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.06.2014, 00:57     Перевод массива из char в int #8
???
Цитата Сообщение от alsav22 Посмотреть сообщение
Содержимое файла покажите.
The SKY
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 27
16.06.2014, 01:02  [ТС]     Перевод массива из char в int #9
файл текстовый должен быть. и в нем числа.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.06.2014, 01:03     Перевод массива из char в int #10
Цитата Сообщение от The SKY Посмотреть сообщение
файл текстовый должен быть. и в нем числа.
Я понимаю. Содержимое файла, с которым будет работать ваша программа, покажите.
The SKY
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 27
16.06.2014, 01:11  [ТС]     Перевод массива из char в int #11
1
-2
3
2
2
-5
-10
2
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.06.2014, 01:15     Перевод массива из char в int #12
Цитата Сообщение от alsav22 Посмотреть сообщение
Что мешает считать в массив int?
Используя оператор >> ?
The SKY
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 27
16.06.2014, 01:25  [ТС]     Перевод массива из char в int #13
может и ничего не мешает. я только начала изучать эту тему и еще не совсем разобралась.

не могли бы вы написать часть этой программы так, чтобы считать данные в целочисленный массив.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.06.2014, 02:46     Перевод массива из char в int #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
11 / 11 / 3
Регистрация: 10.12.2013
Сообщений: 645
16.06.2014, 02:56     Перевод массива из char в int #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;
    
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.06.2014, 03:06     Перевод массива из char в int #16
Sh@dow777, вам не рано советы давать?
Вот это запись из пустого массива в файл, открытый для чтения. Нормально?
C++
1
2
for(int i = 0;i < n;i++)
    istr << buf[i] << " ";
SlavaSSU
213 / 158 / 44
Регистрация: 17.07.2012
Сообщений: 580
16.06.2014, 07:01     Перевод массива из char в int #17
C++ (Qt)
1
2
3
4
5
6
string s;
getline(cin, s);
int a[100];
int n = s.length();
for(int i = 0; i < n; i++)
a[i] = (int)(s[i] - '0');
The SKY
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 27
16.06.2014, 12:50  [ТС]     Перевод массива из char в int #18
alsav22, спасибо. но почему-то считываются неверные цифры. что может быть неправильно?

Добавлено через 1 час 14 минут
всё, уже поняла.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.06.2014, 16:17     Перевод массива из char в int #19
SlavaSSU, считаете, что так можно перевести строку, например, "123", в число 123?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2014, 01:10     Перевод массива из char в int
Еще ссылки по теме:

Перевод из char в int C++
C++ Перевод *char в int[] c++
C++ Перевод char в int

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

Или воспользуйтесь поиском по форуму:
The SKY
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 27
17.06.2014, 01:10  [ТС]     Перевод массива из char в int #20
Такой еще вопрос. Дополнение к данному заданию. В условии сказано:" Из файла (имя файла вводится с клавиатуры) считывается массив целых чисел. Размер массива заранее неизвестен."
Как сделать так, чтоб размер массива не вводить с клавиатуры, а он определялся сам после считывания из файла?
Yandex
Объявления
17.06.2014, 01:10     Перевод массива из char в int
Ответ Создать тему
Опции темы

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