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

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

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

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

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

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

Подсчитать в заданной строке число слов, которые могут быть разделены пробелом, табуляцией, переводом строки - C++
Объясните пожалуйста,в чем ошибка? #include<stdio.h> #include<string.h> int *words(char *s) { int len=strlen(s),i,k=1,l=0; ...

Проблемы с переводом строки в число (по книге Лафоре "ООП в С ++ ") - C++
Лафоре "ООП в Си ++ " - проблемы с упражнением 12, глава 7 Условие: Напишите программу, которая будет принимать от пользователя две...

Можно потоком читать файл, если он может с любым переводом строки? - C++
На одной и той же машине перевод строки может быть виндузячим, никсоидным, или маковым. Можно читать его файловым текстовым потоком ввода?

Отпечатать номер каждой строки, оба элемента которых имеют нулевые значения и число таких строк - C++
Может кто нибудь сможет написать одну из этих прог!) Текст задания: 1). Для матрицы из 2 столбцов и 10 строк отпечатать номер...

Многомерный массив. Дублирование значения первого элемента строки в значении последнего элемента предыдущей - C++
Здравствуйте уважаемые форумчане! Решил я сегодня разобраться с многомерными массивами! И немного разочаровался в своих результатах....

Удалить часть строки от i элемента до j элемента - C++
Нужно удалить в строке char часть символов от i-го элемента до j-элемента. Помогите, очень нужно.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
1
Metal_666_
15 / 15 / 2
Регистрация: 19.10.2009
Сообщений: 187
19.10.2009, 13:16  [ТС] #3
Огромное спасибо!Все оказалось так легко,даже atoi не надо использовать....
0
odip
Эксперт С++
7157 / 3297 / 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';
}
0
ProNoooob
74 / 74 / 6
Регистрация: 14.10.2009
Сообщений: 121
19.10.2009, 14:46 #5
Это называется изобретение велосипеда.
Был бы я преподавателем, такую работу не принял бы.
0
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
19.10.2009, 17:59 #6
Цитата Сообщение от ProNoooob Посмотреть сообщение
Это называется изобретение велосипеда.
Был бы я преподавателем, такую работу не принял бы.
вот видешь как хорошо, что ты не преподаватель.
им на то велосипеды и задают мастерить, чтобы понимать начали как педали крутяться, а уже потом.... ты наверно тоже с первых дней обучения не систему автопилотирования боинга разрабатывать начал.
0
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 482
19.10.2009, 18:10 #7
Ещё можно тупо функцией воспользоваться))
#include<stdlib.h>
int a;
cifra[0]=2;
a=atoi(cifra);//для целого числа
atof(cifra);//для вещественного
0
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,и код желательно покажи,так как написал ты я и сам умею....
0
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 482
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 пробывал.
код простой что не понятно объясню спрашивай
1
Metal_666_
15 / 15 / 2
Регистрация: 19.10.2009
Сообщений: 187
20.10.2009, 00:00  [ТС] #10
Вот теперь спасибо огромное,я просто вместо второго массива,строку создавал,видимо из-за этого конфликт возникал...
0
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
20.10.2009, 00:49 #11
А чем по твоему этот код отличается от предыдущего???Как я понимаю _4islo[i]-'0' будет в точности выглядеть так же как и банальное отнимание 48,хотя если таблица будет другая,то твоя запись более корректна будет....
Тем что более понятный код.
И нет никаких хаков на тему какой же код имеет символ '0'.
0
Metal_666_
15 / 15 / 2
Регистрация: 19.10.2009
Сообщений: 187
20.10.2009, 22:36  [ТС] #12
Ну в любом случае спасибо за помощь,кстати,никто не знает что будет выполняться быстрее и будет жрать меньше памяти:тот метод про который я спрашивал или забивание цифр числа в массив путем деления на 10?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2009, 22:36
Привет! Вот еще темы с ответами:

В матрице отсортировать строки по возрастанию минимального элемента строки - C++
В матрице M x N переставить строки таким образом, чтобы получилась последовательность q1&gt;=q2&gt;=…&gt;=qm, где qi – минимальное значение среди...

От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки - C++
От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки.

Помощь с переводом - C++
Приветствую всех посетителей данного форума. Если кому не сложно помогите немного переделать задачу для С++, условие звучит так: &quot;Дано...

Трудности с переводом с Паскаля на С++ - C++
Переведите программу из языка Pascal в язык C++. Вот программа: Program 253; var s:string; i,n :byte; begin readln(s); for...


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

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

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