int main() { int i, n; cout<<"Введите количество элементов: "; cin>>n; int a[n]; for (i=0; i<n; i++) { cout<<"Введите "<<i+1<<"-й элемент: "; cin>>a[i]; } int sump=0, koln=0; for (i=0; i<n; i++) { if (a[i]<0) koln++; else if (a[i]>0) sump+=a[i]; } cout<<"Сумма положительных равна "<<sump<<endl; cout<<"Количество отрицательных равно "<<koln<<endl; system("PAUSE"); return 0; }
Тестовое решение: Введите количество элементов: 10 Введите 1-й элемент: 4 Введите 2-й элемент: 0 Введите 3-й элемент: -2 Введите 4-й элемент: 6 Введите 5-й элемент: 5 Введите 6-й элемент: 0 Введите 7-й элемент: -5 Введите 8-й элемент: -2 Введите 9-й элемент: 7 Введите 10-й элемент: -4 Сумма положительных равна 22 Количество отрицательных равно 4 Для продолжения нажмите любую клавишу . . .
На вывод работало с 866, а на ввод с 1251 (SetConsoleCP();). В массив пишет каракули. Функции setlocale(LC_CTYPE, "Russian"); setlocale(LC_ALL, "Russian"); тоже не Отлично работают с ОТОБРАЖЕНИЕМ текста в консоли, но с чтение из ее это ужас. В С++ всегда с этим проблема была, с обработкой вводимой кириллицы с консоли. Это те еще танцы с бубнами. Учитывая еще то, что многие функции писались исключительно под XP а про поддержку в версиях выше речи не было вообще. Есть выходы конечно, но у меня не получилось отобразить кириллицу, считать с консоли, и вывести обратно. Что-то одно всегда не работало.Либо выводило правильно, а записывало каракули, либо каракули выводит а записывает правильно. Если убрать все заморочки с кодировками, то вот код:
#include <iostream>
using namespace std;
int main() {
int i, n;
cout<<"Введите количество элементов: ";
cin>>n;
int a[n];
for (i=0; i<n; i++) {
cout<<"Введите "<<i+1<<"-й элемент: ";
cin>>a[i];
}
int sump=0, koln=0;
for (i=0; i<n; i++) {
if (a[i]<0) koln++;
else if (a[i]>0) sump+=a[i];
}
cout<<"Сумма положительных равна "<<sump<<endl;
cout<<"Количество отрицательных равно "<<koln<<endl;
system("PAUSE");
return 0;
}
Тестовое решение:
Введите количество элементов: 10
Введите 1-й элемент: 4
Введите 2-й элемент: 0
Введите 3-й элемент: -2
Введите 4-й элемент: 6
Введите 5-й элемент: 5
Введите 6-й элемент: 0
Введите 7-й элемент: -5
Введите 8-й элемент: -2
Введите 9-й элемент: 7
Введите 10-й элемент: -4
Сумма положительных равна 22
Количество отрицательных равно 4
Для продолжения нажмите любую клавишу . . .
В массив пишет каракули.
Функции setlocale(LC_CTYPE, "Russian"); setlocale(LC_ALL, "Russian"); тоже не Отлично работают с ОТОБРАЖЕНИЕМ текста в консоли, но с чтение из ее это ужас.
В С++ всегда с этим проблема была, с обработкой вводимой кириллицы с консоли.
Это те еще танцы с бубнами. Учитывая еще то, что многие функции писались исключительно под XP а про поддержку в версиях выше речи не было вообще.
Есть выходы конечно, но у меня не получилось отобразить кириллицу, считать с консоли, и вывести обратно. Что-то одно всегда не работало.Либо выводило правильно, а записывало каракули, либо каракули выводит а записывает правильно.
Если убрать все заморочки с кодировками, то вот код:
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_CTYPE, "Russian");
char *str=new char[];
cout<<"Введите слово: "; cin>>str;
for (int i = 0; i < strlen(str); i++)
{
if(str[i]!='я'&&i%2!=0){cout<<str[i];}
}
system("PAUSE");
}