Как понять внести два символа
Перейти к содержимому

Как понять внести два символа

  • автор:

Как из строки взять по два целочисленных символа и перемножить их?

Дана строка: String str = «2347865238»; Понимаю, что вытащить индексы ячеек можно с помощью метода substring(int beginIndex, int endIndex) , но не могу сообразить, как описать в цикле это. Подскажите, пожалуйста, с пояснением.

Отслеживать

5,057 17 17 серебряных знаков 27 27 бронзовых знаков

задан 1 июн 2017 в 13:31

481 1 1 золотой знак 8 8 серебряных знаков 29 29 бронзовых знаков

str.charAt(0) — получаете первый символ. Вычитаете из него символ ‘0’ — получаете число из отрезка 0..9 . Вот что вы дальше хотите сделать не очень понятно.

1 июн 2017 в 13:35

Надо перемножить двузначные числа, 23*47, 47*86 и так далее

Как сравнить два символа в java

Для сравнения символов в Java можно использовать оператор сравнения == Например:

char c1 = 'a'; char c2 = 'b'; if (c1 == c2)  System.out.println("Characters are equal"); > else  System.out.println("Characters are not equal"); > 

Также можно использовать метод equals класса Character :

Character c1 = 'a'; Character c2 = 'b'; if (c1.equals(c2))  System.out.println("Characters are equal"); > else  System.out.println("Characters are not equal"); > 

Обратите внимание, что если необходимо сравнить символы, которые хранятся в строках, то нужно использовать метод charAt класса String :

String str = "abc"; char c = 'a'; if (str.charAt(0) == c)  System.out.println("Characters are equal"); > else  System.out.println("Characters are not equal"); > 

Как в Си выяснить, является ли введённая 1) строка 2) символ в верхнем или же нижнем регистре?

Не могу понять как из буквы сделать цифру, то есть чтобы символ соответствовал символу в таблице ASCII; и потом, как с помощью массива сделать ввод данных, то есть не char а полноценный string, чтобы вводилась сразу строка а не символ

char name; scanf("%s",name); for (i=1;i<=strlen(name);i++)< if (name >= 97 && name if (name >= 65 && name <=90) < printf("upper"); name +=32; printf("now it is lower"); >>
  • Вопрос задан более трёх лет назад
  • 608 просмотров

1 комментарий

Оценить 1 комментарий

Я вообще не понял, что ты пытаешься сделать. Для преобразования в верхний/нижний регистр есть функции toupper()/tolower(), а для определения регистра символа есть функции isupper()/islower(), а для цифр — isdigit().

Решения вопроса 0
Ответы на вопрос 2

Просто объявите переменную в виде char name[100];
После обращайтесь не к name, а к name[i]
Ну и чтобы получить числовое значение символа достаточно написать int(c) или в вашем случае int(name[i])

Ответ написан более трёх лет назад
Нравится 1 2 комментария
У него язык C, int(c) — это работает только для C++.

Точно? Но тогда вот это все равно работает:
char c = ‘C’;
int z = c;
Я только что на pure c проверил.

Программист на «си с крестами» и не только

> как с помощью массива сделать ввод данных, то есть не char а полноценный string, чтобы вводилась сразу строка а не символ

char s[100]; scanf("%99s", s);

Ну и заодно как обработать эту строку.

len = strlen(s); for (i = 0; i < len; ++i) < name = s[i]; // обработай как-нибудь наш name… >

Далее буду пинать ваш код.
> scanf(«%s»,name);
Противная фишка Си как учебного языка. Чтобы сделать простейшие вещи, надо знать сложные концепции. Все параметры scanf, соответствующие подстановкам — %d, %s и т.д. — указатели. И тип этого указателя соответствует типу в форматной строке.
Из-за этого ваш код — явное AV (Access Violation); чтобы ввести один символ, надо scanf(«%c», &name); . Чтобы ввести кучу символов — я написал выше.
Почему для s не нужен знак адреса? А потому, что массив — изначально указатель.

Вторая и третья противные фишки — принципиальная небезопасность многих функций и сложности с организацией простейшего консольного диалога. Допустим, Си из коробки не позволяет расширять строку по мере ввода, и важно ограничивать длину ввода, иначе введёшь 100 символов — будет в лучшем случае AV. А если мы введём больше 99 символов — считаем 99 и остановимся, и дальнейшие scanf’ы начнут читать «хвост».

> for (i=1;i <=strlen(name);i++) <
Явное O(n²) по процессорному времени на пустом месте. strlen ищет заканчивающий ‘\0’ , т.е. его сложность O(n). Надо запомнить длину в отдельную переменную.
Возможен и второй способ — через указатели.

char* p; for (p = s; *p != '\0' ++p) 

Это более эффективный, но и более продвинутый способ.

Python: Извлечение символов из строки

Иногда нужно получить один символ из строки. Например, если сайт знает имя и фамилию пользователя, и в какой-то момент требуется вывести эту информацию в формате A. Ivanov. Для этого компьютеру потребуется взять первый символ из имени. В Python есть подходящая операция, которую мы изучим сегодня.

Представим, что из имени Alexander нужно вывести на экран только первую букву. Это выглядит так:

first_name = 'Alexander' print(first_name[0]) # => A 

Операция с квадратными скобками с цифрой извлекает элемент по индексу — позицией символа внутри строки. Индексы начинаются с 0 почти во всех языках программирования. Поэтому, чтобы получить первый символ, нужно указать индекс 0 . Индекс последнего элемента равен длине строки минус единица. Обращение к индексу за пределами строки приведет к ошибке:

# Длина строки 9, поэтому последний индекс — это 8 first_name = 'Alexander' print(first_name[8]) # => r print(first_name[9]) IndexError: string index out of range 

Чтобы лучше закрепить новые знания, посмотрите на код ниже и подумайте, что он выдаст:

magic = '\nyou' print(magic[1]) # => ? 

Бывают и нестандартные ситуации. Например, нужно вывести элемент из конца, причем из выражения с большим количеством символов. В этом случае можно воспользоваться отрицательным индексом, который облегчит работу программиста.

Допустимо использовать отрицательные индексы. В этом случае идет обращение к символам, начиная с конца строки. -1 — индекс последнего символа, -2 — предпоследнего и так далее. В отличие от прямой индексации, обратный отсчет идет от -1 :

first_name = 'Alexander' print(first_name[-1]) # => r 

Индексом может быть не только конкретное число, но и значение переменной. Посмотрите на пример ниже. Здесь мы записали индекс внутри квадратных скобок не числом, а переменной. Такой код приведет к тому же результату — выводу на экран символа A:

first_name = 'Alexander' index = 0 print(first_name[index]) # => A 

Чтобы выводить из выражения лишь некоторые символы, не нужно писать большое количество строк кода — достаточно извлечь элемент с помощью индекса. Также можно пользоваться отрицательным индексом, чтобы легче выводить символы с конца выражения. Далее разберемся, как с помощью этих знаний можно извлекать подстроки из строки.

Задание

Выведите на экран последний символ строки, находящейся в переменной name

Упражнение не проходит проверку — что делать? ��

Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:

  • Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.

В моей среде код работает, а здесь нет ��

Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

Мой код отличается от решения учителя ��

Это нормально ��, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.

В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.

Прочитал урок — ничего не понятно ��

Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.

Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.

Определения

  • Индекс — позиция символа внутри строки.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *