int gAbs (int x, int y) {
return x+abs(y);
}
/* в main: */
vector<int> arr(N);
// делаем что-то с массивом, заполняем там и т. п.
int sum = accumulate(arr.begin(), arr.end(), 0, gAbs);
cout<<"Сумма абсолютных величин: "<<sum<<endl;
vector<int>::iterator max=max_element( arr.begin(), arr.end() );
cout<<"Максимальный элемент по адресу:"<<distance(arr.begin(), max)<<endl<<"Значение:"<<*(max);
Задачи на массивы(С++)
1. Минимальный по модулю элемент массива.
2. Сумму модулей элементов массива, расположенных после первого элемента, равного нулю.
Преобразовать массив таким образом, чтобы в первой его половине расположились элементы, стоящие в чётных позициях, а во второй половине – элементы стоявшие в нечётных позициях.
3. Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей. Подсчитать количество локальных минимумов заданной матрицей размером 10 на 10.
Найти сумму модулей элементов, расположенных выше главной диагонали.
4. Написать программу, которая считывает английский текст из файла и выводит на экран слова с текстом, начинающимся на гласные буквы.
- в одномерном целочисленном массиве размерности n найти сумму чётных элементов. от Максим Лисовский, 11 февраля 2014 года
Цитата: cronya
Тогда мне не совсем понятно задание, нарисуйте хотя бы как должно быть то
Мне бы самому его понять ! :(
Двумерный целочисленный массив A(m;n) генерируется в ппределах от -100 до 100. Получить новую матрицу в которой все отрицательные элменты заменены на "-1". положительные-"+1", нулевые-без изменений.
Iskander28, и в чем трудность? Поставить 2 проверки условия?
проблема в том что вообще незнаю язык C++
не знаю не вопрос :)
а файл ctime.h можешь скинуть? или что писать в нем скажи плиз. у меня такого заголовочного файла нет
Создайте класс «Целочисленная матрица» для работы с матрицами произвольного размера. В классе должны быть реализованы следующие операции:
• сложения, вычитания, умножения матрицы на матрицу и умножения матрицы на число. Для обозначения операций используйте знаки «+»,«-», «*» (реализовать с помощью перегрузки операций);
• заполнения матрицы случайными числами из заданного диапазона;
• вывода матрицы на печать;
• доступа к отдельным элементам (для присваивания и считывания значения);
• сравнения на равенство (операция ==).
При создании матрица заполняется нулями или инициализируется значениями другой матрицы.
Продемонстрировать в программе работу с этим классом.
Хотя бы некоторые пункты помогите выполнить. Особенно хотелось бы узнать, что об этом думает енот_в_засаде =)))
Цитата: Iskander28
а файл ctime.h можешь скинуть? или что писать в нем скажи плиз. у меня такого заголовочного файла нет
1) Читаем книжки, становимся умными.
2) [CODE=С++]
#include<ctime>// может так
[/CODE]
1. Задана квадратная матрица. Исключить из нее строку и столбец, на пересечении которых расположен максимальный элемент глав¬ной диагонали.
2.Дана целочисленная квадратная матрица порядка n. Получить b1,...,bn, где bi - это сумма элементов, предшествующих последнему отрицательному элементу i-й строки (если все элементы строки не¬отрицательны, то принять bi= -1).
3. Ввести структуру ДАТА с полями ЧИСЛО, МЕСЯЦ, ГОД. Составить и протестировать функцию
a) ввода и вывода на экран даты;
b) вычисляющую дату, на N дней вперед по заданной;
c) находящую в массиве введенных дат все даты заданного года.
Помогите решить. Буду благодарен.
Цитата: Andrei7
Дан массив X. Переписать пять первых положительных элементов массива подряд в массив Y. Найти максимальный элемент массива X.
Помогите решить. Буду благодарен.
Помогите решить. Буду благодарен.
Код:
Dim X(1 to 10) As Integer
Dim Y(1 to 5) As Integer
Dim N,F,M As Integer
F=1
For N=1 To 10
If X(N)>0 Then
Y(F)=X(N)
If F=1 Then
M=1
Else
If Y(M)<Y(F) Then
M=F
End If
End If
F=F+1
End If
If F>=5 Then Exit For
Next N
Dim Y(1 to 5) As Integer
Dim N,F,M As Integer
F=1
For N=1 To 10
If X(N)>0 Then
Y(F)=X(N)
If F=1 Then
M=1
Else
If Y(M)<Y(F) Then
M=F
End If
End If
F=F+1
End If
If F>=5 Then Exit For
Next N
:trollface:
спасибо, но мне бы на СИ++
Код:
#include <iostream>
#include <conio.h>
#include <vector>
#include <algorithm>
bool IsMayCopy(int value)
{
return (value <= 0);
}
int _tmain(int argc, _TCHAR* argv[])
{
const size_t MAX_POSITIVE_VALUES = 5;
const int values[] = {-1, 5, 0, 78, -5, 3, -9, 16, 27, -3, 5};
std::vector<int> v(values, values + sizeof(values) / sizeof(int));
std::vector<int> vFivePositiveValues;
std::remove_copy_if(v.begin(), v.end(), std::back_inserter(vFivePositiveValues), IsMayCopy);
if (vFivePositiveValues.size() > MAX_POSITIVE_VALUES) vFivePositiveValues.resize(MAX_POSITIVE_VALUES);
int maximum = *std::max_element(v.begin(), v.end());
std::cout << "Five first positive values:" << std::endl;
for (size_t i = 0; i < vFivePositiveValues.size(); ++i)
{
std::cout << vFivePositiveValues << " ";
}
std::cout << std::endl << "Max value: " << maximum << std::endl;
std::cout << "Press any key to quit...";
_getch();
return 0;
}
#include <conio.h>
#include <vector>
#include <algorithm>
bool IsMayCopy(int value)
{
return (value <= 0);
}
int _tmain(int argc, _TCHAR* argv[])
{
const size_t MAX_POSITIVE_VALUES = 5;
const int values[] = {-1, 5, 0, 78, -5, 3, -9, 16, 27, -3, 5};
std::vector<int> v(values, values + sizeof(values) / sizeof(int));
std::vector<int> vFivePositiveValues;
std::remove_copy_if(v.begin(), v.end(), std::back_inserter(vFivePositiveValues), IsMayCopy);
if (vFivePositiveValues.size() > MAX_POSITIVE_VALUES) vFivePositiveValues.resize(MAX_POSITIVE_VALUES);
int maximum = *std::max_element(v.begin(), v.end());
std::cout << "Five first positive values:" << std::endl;
for (size_t i = 0; i < vFivePositiveValues.size(); ++i)
{
std::cout << vFivePositiveValues << " ";
}
std::cout << std::endl << "Max value: " << maximum << std::endl;
std::cout << "Press any key to quit...";
_getch();
return 0;
}
P.S. Какая-же, кстати, мудацкая цветовая схема у подсветки cpp: нихера не видно и глаза режет.
Нездешний, некросплатформенный у тебя пример (g++ ругается) и неэффективный. Мало того, что память занимается лишняя, так ещё и удаляем все отрицательные, вместо того, чтобы скопировать только 5 чисел и остановиться. Вектора тут ни к чему, ибо известно, какой размер будет у массива y.
Да ладно тебе! Не мешай чуток потроллить ;)
Если человек не в состоянии перекопировать с неким условием данные из одного массива в другой - ясное дело, что этот пример ему не поможет :)
И понятно, что с точки зрения чисто вычислений алгоритм неоптимален. Зато он неплох в балансе вычисления/время разработки ;)
Что там с gcc, кстати? У меня только студии под рукой сейчас
Цитата: Нездешний
Что там с gcc, кстати? У меня только студии под рукой сейчас
_tmain, _TCHAR, _getch
Цитата: Нездешний
2 Kogrom
Да ладно тебе! Не мешай чуток потроллить ;)
Да ладно тебе! Не мешай чуток потроллить ;)
Я не против. Присоединился же.
Цитата: Нездешний
Зато он неплох в балансе вычисления/время разработки ;)
Тогда уж так:
Код:
x = [-1, 5, 0, 78, -5, 3, -9, 16, 27, -3, 5]
y = [a for a in x if a > 0][:5] # for little list
print y
print max(x)
y = [a for a in x if a > 0][:5] # for little list
print y
print max(x)
но это без учёта замечания от Der Meister-а
Цитата: Нездешний
Что там с gcc, кстати? У меня только студии под рукой сейчас
error: conio.h: Нет такого файла или каталога
error: ‘_TCHAR’ has not been declared
error: ‘_getch’ was not declared in this scope
Код:
arr = [-1, 5, 0, 78, -5, 3, -9, 16, 27, -3, 5]
arr.select{|v| v > 0}.slice(0..5)
arr.max
arr.select{|v| v > 0}.slice(0..5)
arr.max
Ну а если учесть замечание Der Meister'a и заодно попробовать некоторые плюшки С++ 11:
Код:
#include <iostream>
#include <conio.h>
#include <algorithm>
#include <iterator>
#include <vector>
int _tmain()
{
const int MIN_SEQUENCE_LEN = 5;
const int values[] = {0, 1, 2, -3, 3, 4, 5, 6, 7, -4, -12, 89};
//show
std::cout << "array: ";
for (auto it = std::begin(values); it != std::end(values); ++it)
{
std::cout << *it << " ";
}
//find maximum
auto max = *std::max_element(std::begin(values), std::end(values));
std::cout << std::endl << "maximum: " << max << std::endl;
//find positive sequence
std::vector<decltype(max)> fivePositives;
for (auto it = std::begin(values); it != std::end(values); ++it)
{
if (*it <= 0) continue;
auto firstNonPositive = std::find_if(it, std::end(values), [] (int i) {return i <= 0;});
auto dist = std::distance(it, firstNonPositive);
if (dist >= MIN_SEQUENCE_LEN)
{
std::copy(it, it + MIN_SEQUENCE_LEN, std::back_inserter(fivePositives));
break;
}
else
{
it += dist;
}
}
//show positive sequence
std::cout << "positive sequence (min lenght " << MIN_SEQUENCE_LEN << "): ";
for (auto it = std::begin(fivePositives); it != std::end(fivePositives); ++it)
{
std::cout << *it << " ";
}
std::cout << std::endl << "Press any key to quit...";
_getch();
return 0;
}
#include <conio.h>
#include <algorithm>
#include <iterator>
#include <vector>
int _tmain()
{
const int MIN_SEQUENCE_LEN = 5;
const int values[] = {0, 1, 2, -3, 3, 4, 5, 6, 7, -4, -12, 89};
//show
std::cout << "array: ";
for (auto it = std::begin(values); it != std::end(values); ++it)
{
std::cout << *it << " ";
}
//find maximum
auto max = *std::max_element(std::begin(values), std::end(values));
std::cout << std::endl << "maximum: " << max << std::endl;
//find positive sequence
std::vector<decltype(max)> fivePositives;
for (auto it = std::begin(values); it != std::end(values); ++it)
{
if (*it <= 0) continue;
auto firstNonPositive = std::find_if(it, std::end(values), [] (int i) {return i <= 0;});
auto dist = std::distance(it, firstNonPositive);
if (dist >= MIN_SEQUENCE_LEN)
{
std::copy(it, it + MIN_SEQUENCE_LEN, std::back_inserter(fivePositives));
break;
}
else
{
it += dist;
}
}
//show positive sequence
std::cout << "positive sequence (min lenght " << MIN_SEQUENCE_LEN << "): ";
for (auto it = std::begin(fivePositives); it != std::end(fivePositives); ++it)
{
std::cout << *it << " ";
}
std::cout << std::endl << "Press any key to quit...";
_getch();
return 0;
}
Из опробованного работает в MSVC 2010:
- auto
- decltype
- лямбды
- make_shared
не работает:
- for (auto i : some_collection) //range-based for
- списки инициализации для вектора
Цитата: Нездешний
Код:
...
const int values[] = {0, 1, 2, -3, 3, 4, 5, 6, 7, -4, -12, 89};
...
auto max = *std::max_element(std::begin(values), std::end(values));
...
const int values[] = {0, 1, 2, -3, 3, 4, 5, 6, 7, -4, -12, 89};
...
auto max = *std::max_element(std::begin(values), std::end(values));
...
Да, end для массива - полезный "синтаксический сахар". Зачем нужен begin - пока не понял. Можно же написать просто values. Возможно, читаемость повышает.
Определить в одномерном числовом массиве А,состоящим из n элементов,число соседств из двух положительных чисел.
надо сделать примитивно всё и в Microsoft Visual Studio 2005.молююююю!!!!!!
Задача
Дана матрица размером N*M, назовем особым элемент текущей строки, если он больше суммы элементов ему предшествующих в строке.
Определить строку с наибольшим кол-вом особых элементов.
Необходимо уже 12.11.11 с 7 утра по москве - чтоб смог разобраться.
Хотя если кто нить сможет сделать после этого предела, буду очень благодарен за помошь- хоть буду знать! Спасибо!
Код:
#define N 3
#define M 5
int arr[N][M];
int qu[N]; // количество особых в i-й строке
void reset() {
int i, j;
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
arr[j] = 0;
}
qu = 0;
}
}
int stringSum(int n, int limit) {
int i, sum = 0;
for (i = 0; i < limit; i++) {
sum += arr[n];
}
return sum;
}
void specQuantity(void) {
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
if ( arr[j] > stringSum(i, j) ) {
qu++;
}
}
}
}
/**
@usage:
* reset();
* ..array work..
* specQuantity();
*/
#define M 5
int arr[N][M];
int qu[N]; // количество особых в i-й строке
void reset() {
int i, j;
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
arr[j] = 0;
}
qu = 0;
}
}
int stringSum(int n, int limit) {
int i, sum = 0;
for (i = 0; i < limit; i++) {
sum += arr[n];
}
return sum;
}
void specQuantity(void) {
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
if ( arr[j] > stringSum(i, j) ) {
qu++;
}
}
}
}
/**
@usage:
* reset();
* ..array work..
* specQuantity();
*/
только это не плюсы
:mad:
Построить список , исключить первые и n элементы , расположенные после
1. первого отрицательного
2. после наибольшего
3. несколько функций от себя
Добавлено через 2 минуты
Написал код, но не знаю правильно ли? ну там еще пару действий добавил на всякий случай, чтоб ничего еще не сказали на лету сделать!
#include<iostream.h>
#include<conio.h>
struct node {
int info;
node *next, *prev;
};
void add_L(node*&first, node*&last, int x) {
node*p = new node;
p->info = x;
p->prev = 0;
p->next = first;
if(first == 0) last = 0;
else first->prev = p;
first = p;
}
void add_R(node*&first, node*&last, int x) {
node*p = new node;
p->info = x;
p->next = 0;
p->prev = last;
if(last) last->next = p;
else first = p;
last = p;
}
void make(node*&first, node*&last) {
first = 0;
last = 0;
int x;
do {
cout<<"\n VVesti nomer: \n";
cin>>x;
add_R(first, last, x);
cout<<"\n Continue ? Y/N \n";
//cout<<"\nFirst: "<<first<<"\nLast: "<<last;
} while(getch()!='n');
}
void output(node*first, char t[]) {
if(first == 0) cout<<"\n List empty \n";
else {
node*p = first;
cout<<t;
while(p) {
cout<<p->info<<" ";
p = p->next;
}
cout<<endl;
}
}
void insert(node*&last, node*p, int x) {
node*t = new node;
t->info = x;
t->next = p->next;
t->prev = p;
if(p == last) last = t;
else p->next->prev = t;
p->next = t;
}
void remove(node*&first, node*&last, int &x, node*p) {
if(p == first) first = p->next;
else p->prev->next = p->next;
if(p == last) last = p->prev;
else p->next->prev = p->prev;
x = p->info;
delete p;
}
void sort(node*first, node*last) {
node*p = first, *t, *pmin;
while(p != last) {
pmin = p;
t = p->next;
while(t) {
if(t->info < pmin->info) pmin = t;
t = t->next;
}
int z = p->info;
p->info = pmin->info;
pmin->info = z;
p = p->next;
}
}
void main() {
clrscr();
int x, z, sum = 0;
node*first, *last, *p, *a;
make(first, last);
output(first, "\n Spisok: \n");
//Delete 1 pozitive
p = first;
while (p!=0&&p->info<0){
p=p->next;
}
if(p==0) cout<<"\n Net polzitelnih \n";
else{ remove (first, last, x, p);
sum = sum + x;
output(first,"\n Spisok posle udaleniya 1 polozitelnogo \n");
}
//Add novogo elementa posle min
p = first;
a = first;
z = p->info;
while(p!=0) {
p = p->next;
if(z>p->info) {
z = p->info;
a = p;
}
}
cout<<"\n Novii Element ";
cin>>x;
insert(last, a, x);
output(first,"\n Spisok posle dobavlenya\n");
//Udalenie vseh polozitelnih
p = first;
while(p!=0) {
if(p->info>0) {
remove(first, last, x, p);
sum = sum + x;
p = p->prev;
}
p = p->next;
}
output(first,"\n Spisok posle udaleniya vseh polozitel'nih\n");
sort(first,last);
output(first,"\n Spisok posle sortirovki\n");
getch();
}
Пожалуйста проверьте кто понимает - чувствую что я не удовлетворил условию задачи ! покажите , где это может быть и как исправить!
Добрый вечер, ломаю голову над вопросом и взываю к вашей помощи. Помогите с программой:
"Написать программу, которая считывает линейный массив из файла, выводит его на экран и определяет, упорядочен ли он по возрастанию." на языке c++.
Вот проверка на упорядоченность (например как вариант):
int Check(int *a, int n)
{
return n < 2 ? 1 : (a[n - 2] > a[n - 1] ? 0 : Check(a, n - 1));
}
Заранее спасибо за помощью
Цитата: YuninDen
Вот проверка на упорядоченность (например как вариант):
int Check(int *a, int n)
{
return n < 2 ? 1 : (a[n - 2] > a[n - 1] ? 0 : Check(a, n - 1));
}
Заранее спасибо за помощью
Это кто над вами так пошутил? :D
Ну, а где остальное? Там же где и спасибо - за помощью?
это залача обговаривалась еще в начале темы но так ее и не решили
Элемент матрицы называется локальным минимумом, если его значение строго меньше значений всех имеющихся соседей. Подсчитать количество локальных минимумов заданной матрицы и напечатать информацию о каждом из них.
1) дана матрица А(4,4) найти сумму отрицательных элементов, расположенных ПОД главной диагональю, и адрес ячейки, где эта сумма хранится.
2) 1. определить время записи одного блока на дискету.
2. вывести число байт в секторе.
3. определить число скрытых секторов.
*в паскале еще хоть как-то программировала, а язык си для меня вообще темный лес.=(
так же как примерно понимаю решение первой задачи, а второй понятия не имею.=(((
пожалуйста, помогите, очень надо...
[ATTACH]5418[/ATTACH]
Нужно решить задачу на массивы:
1)Найти индекс минимального элемента
2)Переставить в начало массива элементы, кратные заданному числу
3)Вставить заданное число после каждого не отрицательного элемента
4)Удалить строки содержащие заданное количество нулевых элементов
5)Определить есть ли в строке заданная удвоенная буква
В одномерном массиве, состоящем из N вещественных чисел, вычислить:
a) сумму абсолютных величин всех элементов массива
b) найти максимальный элемент массива и его номер (индекс)
Примечания и требования:
1) Написать функции, реализующие вычисления.
2)Протестировать эти функции при N = 16
3)Проинициализировать массив внутри ф-ции main.
4)Вывести на экран в удобной и наглядной форме исходный массив и результаты
Цитата: Kusenka
помогите,пожалуйста, решить задачу в С++
В одномерном массиве, состоящем из N вещественных чисел, вычислить:
a) сумму абсолютных величин всех элементов массива
b) найти максимальный элемент массива и его номер (индекс)
Примечания и требования:
1) Написать функции, реализующие вычисления.
2)Протестировать эти функции при N = 16
3)Проинициализировать массив внутри ф-ции main.
4)Вывести на экран в удобной и наглядной форме исходный массив и результаты
В одномерном массиве, состоящем из N вещественных чисел, вычислить:
a) сумму абсолютных величин всех элементов массива
b) найти максимальный элемент массива и его номер (индекс)
Примечания и требования:
1) Написать функции, реализующие вычисления.
2)Протестировать эти функции при N = 16
3)Проинициализировать массив внутри ф-ции main.
4)Вывести на экран в удобной и наглядной форме исходный массив и результаты
Код:
В массиве записаны значения роста 13 юношей класса. В середине -учебного года ученик, рост которого был записан в третьей ячейке массива, был переведен в другую школу. Внесите это изменение в массив
Цитата: нови4ок
В середине -учебного года ученик, рост которого был записан в третьей ячейке массива, был переведен в другую школу. Внесите это изменение в массив
массив каким образом представлен? plain? vector?
1 программа. Сортировка массива.
Условия сортировки:
а) Кратно 2
б) Представимо в виде 2 в степени n
в) По убыванию
2 программа. Удалить прилагательные из текста.
Помогите пожалуйста, а то вообще нуб в программировании.
Заранее спасибо, тем кто отзовется.
зачем оно вам, если вы нуб?
Для информатики