0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 27

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

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

Author24 — интернет-сервис помощи студентам
есть массив символьного типа. нужно перевести его в тип int для того, что бы далее производить над ним действия уже как с цифрами. как это сделать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.06.2014, 00:20
Ответы с готовыми решениями:

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

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

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

20
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
16.06.2014, 00:22
Цитата Сообщение от The SKY Посмотреть сообщение
как это сделать?
Зачем? Код символа - это тоже число (однобайтовое). Какие действия хотите производить?
0
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 27
16.06.2014, 00:31  [ТС]
Вывести в файл количество четных чисел, расположенных в массиве между первым положительным и последним отрицательным числами в массиве.
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
16.06.2014, 00:34
Цитата Сообщение от The SKY Посмотреть сообщение
Вывести в файл количество четных чисел, расположенных в массиве между первым положительным и последним отрицательным числами в массиве.
Каким чудом, в это задание, залетел символьный массив?
1
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 27
16.06.2014, 00:42  [ТС]
Вот задание целиком.

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


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

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

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

не могли бы вы написать часть этой программы так, чтобы считать данные в целочисленный массив.
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
16.06.2014, 02:46
Если следовать логике вашей программы:
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;
1
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
16.06.2014, 02:56
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;
    
}
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
16.06.2014, 03:06
Sh@dow777, вам не рано советы давать?
Вот это запись из пустого массива в файл, открытый для чтения. Нормально?
C++
1
2
for(int i = 0;i < n;i++)
    istr << buf[i] << " ";
0
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
16.06.2014, 07:01
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');
0
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 27
16.06.2014, 12:50  [ТС]
alsav22, спасибо. но почему-то считываются неверные цифры. что может быть неправильно?

Добавлено через 1 час 14 минут
всё, уже поняла.
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
16.06.2014, 16:17
SlavaSSU, считаете, что так можно перевести строку, например, "123", в число 123?
0
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 27
17.06.2014, 01:10  [ТС]
Такой еще вопрос. Дополнение к данному заданию. В условии сказано:" Из файла (имя файла вводится с клавиатуры) считывается массив целых чисел. Размер массива заранее неизвестен."
Как сделать так, чтоб размер массива не вводить с клавиатуры, а он определялся сам после считывания из файла?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.06.2014, 01:10
Помогаю со студенческими работами здесь

Перевод массива char в массив int (в чем ошибка?)
не могу понять почему не работает функция void StrToIntMass (int element, char buffer) { int k = 0,j = 0; char...

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

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

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

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


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

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

Новые блоги и статьи
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 24.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 24.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 22.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 21.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 21.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
PostgreSQL в Kubernetes: Подготовка кластера и настройка
Mr. Docker 21.03.2025
Когда доходит до контейнеризации баз данных и особенно таких требовательных к ресурсам системах как PostgreSQL, многие команды до сих пор колеблются, прежде чем перенести их в контейнерную. . .
C++26: Индексирование пакетов и метапрограммиро­вание
bytestream 21.03.2025
Эволюция C++ продолжается стремительными темпами – каждый новый стандарт приносит функциональность, о которой мы мечтали годами. Звучит слишком громко? Если вы когда-либо боролись с вариадическими. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru