Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2016, 01:00   #21
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Цитата:
Сообщение от taina1976 Посмотреть сообщение
А как правильно считать число как строку?
Так, например:
Код:
#include <iostream>
#include <string>

int main()
{
	std::string s;
	std::cin >> s;
	unsigned int sum = 0;
	for (size_t i = 0; i < s.size(); ++i) {
		sum += s[i] - '0';
	}

	std::cout << sum;
}
Будет считать для числа любой длины.

Последний раз редактировалось Son Of Pain; 11.12.2016 в 01:06.
Son Of Pain вне форума Ответить с цитированием
Старый 11.12.2016, 01:04   #22
taina1976
Пользователь
 
Регистрация: 22.10.2016
Сообщений: 18
По умолчанию

Спасибо, буду пробовать!
taina1976 вне форума Ответить с цитированием
Старый 12.12.2016, 21:34   #23
taina1976
Пользователь
 
Регистрация: 22.10.2016
Сообщений: 18
По умолчанию

Помогите найти ошибку!
Определить, является ли заданная строка палиндромом?
Во входном потоке дана строка символов. Количество символов не превышает 255.

В выходной поток вывести слово 'YES', если строка является палиндромом, или 'NO' - если нет.
Пример входного файла:
ABNNBA
Пример выходного файла:
YES

У меня вот так:
Код:
#include <iostream>
#include <string.h>
using namespace std;

int main()
{
   int n;
   cin>>n;

    char stroka[256];
    n=strlen(stroka);
     for (int i=0;  i<n/2; i++ )
{
        if(stroka[i]!=stroka[n-1-i])

            cout<<"NO";
     else
         cout<<"YES";
}

    return 0;
}
НЕ ПОЛУЧАЕТСЯ!
taina1976 вне форума Ответить с цитированием
Старый 12.12.2016, 22:42   #24
olej.tsil
Заблокирован
 
Регистрация: 29.11.2016
Сообщений: 215
По умолчанию

Цитата:
Сообщение от taina1976 Посмотреть сообщение
for (int i=0; i<n/2; i++ ) {
if(stroka[i]!=stroka[n-1-i])
cout<<"NO";
else
cout<<"YES";
}
Код:
bool poly;
for (int i=0; i<n/2; i++ ) 
   if( !( poly = stroka[i] == stroka[n-1-i] ) break
cout << ( poly ? "YES" : "NO" ) << endl;
olej.tsil вне форума Ответить с цитированием
Старый 12.12.2016, 22:57   #25
taina1976
Пользователь
 
Регистрация: 22.10.2016
Сообщений: 18
По умолчанию

Код:
bool poly;
for (int i=0; i<n/2; i++ ) 
   if( !( poly = stroka[i] == stroka[n-1-i] ) break
cout << ( poly ? "YES" : "NO" ) << endl;
При любых входных данных выводит отрицательный ответ.

Последний раз редактировалось taina1976; 12.12.2016 в 23:04.
taina1976 вне форума Ответить с цитированием
Старый 13.12.2016, 00:04   #26
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Ну, во-первых, ты не читаешь строку из входного файла вообще Читаешь какое-то число, потом делаешь strlen непроинициализированной переменной, такое.

Во-вторых, ты принимаешь решение о палиндромности по первому же сравнению. В итоге будет на каждую итерацию цикла вывод ес/но. Нужно сохранять результат проверки в переменную, и смотреть на него в конце цикла.
Son Of Pain вне форума Ответить с цитированием
Старый 13.12.2016, 00:06   #27
olej.tsil
Заблокирован
 
Регистрация: 29.11.2016
Сообщений: 215
По умолчанию

Цитата:
Сообщение от taina1976 Посмотреть сообщение
При любых входных данных выводит отрицательный ответ.
У вас ничего оно не может выводить, потому что синтаксически некорректно (я писал в лёт по памяти) - там не завершающей скобки, а это очень важно:
Код:
if( !( poly = stroka[i] == stroka[n-1-i] ) ) break;
А к вопросу "не работает"?
Код:
$ ./palindrom 
введите строку: 11
строка палиндром
введите строку: 12
строка не палиндром
введите строку: 131
строка палиндром
введите строку: 132
строка не палиндром
введите строку: 1221
строка палиндром
введите строку: 12321
строка палиндром
введите строку: 12331
строка не палиндром
введите строку: ^C
olej.tsil вне форума Ответить с цитированием
Старый 13.12.2016, 00:07   #28
olej.tsil
Заблокирован
 
Регистрация: 29.11.2016
Сообщений: 215
По умолчанию

Цитата:
Сообщение от Son Of Pain Посмотреть сообщение
Ну, во-первых, ты не читаешь строку из
Да ... с вводом самой строки там беда...
olej.tsil вне форума Ответить с цитированием
Старый 16.12.2016, 23:44   #29
taina1976
Пользователь
 
Регистрация: 22.10.2016
Сообщений: 18
По умолчанию

Помогите с кодом!
Среднее арифметическое кодов
Вывести среднее арифметическое кодов согласных букв, стоящих на четных позициях строки.

Во входном потоке дана единственная строка, состоящая из маленьких английских букв. Длинна строки не превышает 255 символов.

В выходной поток вывести единственное вещественное число с точностью три знака после запятой.

Пример входного файла: aeafg
Пример выходного файла :102.000
taina1976 вне форума Ответить с цитированием
Старый 17.12.2016, 19:48   #30
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Так чем конкретно помочь? )
Читаешь строку, в цикле проходишь по всем символам, если согласная буква и позиция четная - добавляешь ее к сумме и увеличиваешь счетчик на единицу. Потом делишь сумму на счетчик и выводишь.
Son Of Pain вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Язык C]: В массиве числа образуют неубывающую последовательность. Найти количество различных чисел в массиве. Помогите найти ошибку. Yulia24* Помощь студентам 0 18.10.2016 20:41
Дан массив а(n) типа SWORD. найти сумму всех отрицательных элементов массива.помогите найти ошибку Юлия123456 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 07.09.2016 06:12
Помогите найти ошибку AmaPC HTML и CSS 0 15.11.2015 19:39
Найти седловые точки в матрице(помогите найти ошибку) - pascal tdsotm Помощь студентам 0 20.11.2014 18:57
Помогите найти ошибку - StrToFloat выдаёт ошибку EConvertError для ячеек StringGrid (Delphi) Artsiom Помощь студентам 10 18.12.2013 14:10