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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.68
Metal_666_
15 / 15 / 2
Регистрация: 19.10.2009
Сообщений: 187
#1

Работа с переводом элемента строки в число - C++

19.10.2009, 12:53. Просмотров 2796. Ответов 11
Метки нет (Все метки)

Суть задачи состоит в том,чтобы допустим из строки char _4islo[]="253617521"; записать все цифры в некоторый массив int cifra[8]; так,чтобы каждая ячейка соответствовала цифре в строке,к примеру
cifra[0]=2;
cifra[1]=5; и т.д.
Пробывал брать какой-нибудь элемент массива,к примеру _4islo[3] и переводить его в цифру функцией atoi,но он мне писал ошибку,может я код неправильно оформил???Вариант типа:перевести всю строку в число,а затем через цикл делением на 10 остатки забить в массив я умею делать,а вот можно ли осуществить это переводом отдельного выбранного элемента,что сэкономило бы нам время...Если можно напишите код с подробным объяснением.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2009, 12:53     Работа с переводом элемента строки в число
Посмотрите здесь:

От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки C++
C++ Помощь с переводом
Не работает цикл с переводом типов C++
C++ Проблемы с переводом строки в число (по книге Лафоре "ООП в С ++ ")
C++ Удалить часть строки от i элемента до j элемента
C++ Отпечатать номер каждой строки, оба элемента которых имеют нулевые значения и число таких строк
Подсчитать в заданной строке число слов, которые могут быть разделены пробелом, табуляцией, переводом строки C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GAV_13
81 / 81 / 4
Регистрация: 14.09.2009
Сообщений: 252
19.10.2009, 13:01     Работа с переводом элемента строки в число #2
C++
1
2
3
for(int i=0;i<=8;i++)
  cifra[i]=_4islo[i]-48;
// в таблице ASCII 0 имеет код 48, 1 - 49 и т.д. чтобы получить число, из его кода надо отнять 48
Metal_666_
15 / 15 / 2
Регистрация: 19.10.2009
Сообщений: 187
19.10.2009, 13:16  [ТС]     Работа с переводом элемента строки в число #3
Огромное спасибо!Все оказалось так легко,даже atoi не надо использовать....
odip
Эксперт С++
7153 / 3293 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
19.10.2009, 14:36     Работа с переводом элемента строки в число #4
Неправильно, нужно так:
C
1
2
3
for(int i=0;i<=8;i++) {
  cifra[i]=_4islo[i]-'0';
}
ProNoooob
72 / 72 / 6
Регистрация: 14.10.2009
Сообщений: 121
19.10.2009, 14:46     Работа с переводом элемента строки в число #5
Это называется изобретение велосипеда.
Был бы я преподавателем, такую работу не принял бы.
TanT
эволюционирую потихоньку
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
19.10.2009, 17:59     Работа с переводом элемента строки в число #6
Цитата Сообщение от ProNoooob Посмотреть сообщение
Это называется изобретение велосипеда.
Был бы я преподавателем, такую работу не принял бы.
вот видешь как хорошо, что ты не преподаватель.
им на то велосипеды и задают мастерить, чтобы понимать начали как педали крутяться, а уже потом.... ты наверно тоже с первых дней обучения не систему автопилотирования боинга разрабатывать начал.
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 472
19.10.2009, 18:10     Работа с переводом элемента строки в число #7
Ещё можно тупо функцией воспользоваться))
#include<stdlib.h>
int a;
cifra[0]=2;
a=atoi(cifra);//для целого числа
atof(cifra);//для вещественного
Metal_666_
15 / 15 / 2
Регистрация: 19.10.2009
Сообщений: 187
19.10.2009, 22:21  [ТС]     Работа с переводом элемента строки в число #8
Цитата Сообщение от odip Посмотреть сообщение
Неправильно, нужно так:
C
1
2
3
for(int i=0;i<=8;i++) {
  cifra[i]=_4islo[i]-'0';
}

А чем по твоему этот код отличается от предыдущего???Как я понимаю _4islo[i]-'0' будет в точности выглядеть так же как и банальное отнимание 48,хотя если таблица будет другая,то твоя запись более корректна будет....

Цитата Сообщение от ProNoooob Посмотреть сообщение
Это называется изобретение велосипеда.
Был бы я преподавателем, такую работу не принял бы.
Хорошо,предложи свой способ,я же прошу помочь,а не критиковать метод...

Цитата Сообщение от From_Tula Посмотреть сообщение
Ещё можно тупо функцией воспользоваться))
#include<stdlib.h>
int a;
cifra[0]=2;
a=atoi(cifra);//для целого числа
atof(cifra);//для вещественного
Ну попробуй мне выдернуть 3 из строки 12345 и перевести эту цифру в int,и код желательно покажи,так как написал ты я и сам умею....
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 472
19.10.2009, 23:07     Работа с переводом элемента строки в число #9
Често я не знаю что ты умеешь а что нет!
ТЫ просил помощи мы тебе помогаем!
Лучше бы спасибо говорил!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
char st[100],sim[1];
int i,mas[10],len;
printf ("Введите число:");
gets(st);
len=strlen(st);
for (i=0;i<len;i++)
{
sim[0]=st[i];
mas[i]=atoi(sim);
}
printf ("Массив всех цифр = ");
for(i=0;i<len;i++)
printf ("%d",mas[i]);
}
p.s. просто не дочитал что ты через atoi пробывал.
код простой что не понятно объясню спрашивай
Metal_666_
15 / 15 / 2
Регистрация: 19.10.2009
Сообщений: 187
20.10.2009, 00:00  [ТС]     Работа с переводом элемента строки в число #10
Вот теперь спасибо огромное,я просто вместо второго массива,строку создавал,видимо из-за этого конфликт возникал...
odip
Эксперт С++
7153 / 3293 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
20.10.2009, 00:49     Работа с переводом элемента строки в число #11
А чем по твоему этот код отличается от предыдущего???Как я понимаю _4islo[i]-'0' будет в точности выглядеть так же как и банальное отнимание 48,хотя если таблица будет другая,то твоя запись более корректна будет....
Тем что более понятный код.
И нет никаких хаков на тему какой же код имеет символ '0'.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2009, 22:36     Работа с переводом элемента строки в число
Еще ссылки по теме:

Можно потоком читать файл, если он может с любым переводом строки? C++
C++ В динамической матрице целых чисел добавить строки после строки, содержащей простое число
Многомерный массив. Дублирование значения первого элемента строки в значении последнего элемента предыдущей C++
Трудности с переводом с Паскаля на С++ C++

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

Или воспользуйтесь поиском по форуму:
Metal_666_
15 / 15 / 2
Регистрация: 19.10.2009
Сообщений: 187
20.10.2009, 22:36  [ТС]     Работа с переводом элемента строки в число #12
Ну в любом случае спасибо за помощь,кстати,никто не знает что будет выполняться быстрее и будет жрать меньше памяти:тот метод про который я спрашивал или забивание цифр числа в массив путем деления на 10?
Yandex
Объявления
20.10.2009, 22:36     Работа с переводом элемента строки в число
Ответ Создать тему
Опции темы

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