Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > C/C++/С#


Ответ
 
Опции темы Опции просмотра
Старый 30.10.2012, 22:49   #1 (permalink)
moretti
Новичок
 
Регистрация: 30.10.2012
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Задачи на тему "Массивы", С++

Доброго времени суток, мог бы кто-нибудь помочь с заданием по проге, а именно программы:
1.Найти сумму чисел, расположенных между максимальным и минимальным элементами (включая сами числа).
2.Найти наибольшее среди чисел первой последовательности, входящих во вторую.
3.Дан массив целых чисел, содержащий n элементов. Получить массив, в котором записаны сначала все положительные числа, затем все отрицательные числа и нули, сохраняя порядок следования.
4.Найти наибольший элемент среди элементов главной и побочной диагонали и вывести на экран строку, в которой он находится. Определить, явля¬ется ли матрица ортонормированной, т. е. такой, в которой скалярное произведение каждой пары различных строк равно 0, а ска¬лярное произведение каждой стро-ки на себя равно 1.
5.Определить номер первой по порядку строки, в которой содержится наименьшее количество различных символов.
Был бы бескрайне благодарен, можно и договориться)
moretti вне форума   Ответить с цитированием

Старый 30.10.2012, 22:49
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Можно узнать множество полезной информации перейдя по этим ссылкам

Как сделать тему ХР?
Мод Playstation 3 на тему Far Cry 2
Паскаль. Задачи на массивы
Паскаль. Три задачи на массивы

Старый 30.10.2012, 23:25   #2 (permalink)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 10.03.2011
Сообщений: 766
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
По умолчанию

Задача 1:
Цитата:
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <numeric>

int main()
{
std::vector<int> vec((std::istream_iterator<int>(std::cin)), std::istream_iterator<int>());
if (vec.size() <= 2)
{
std::cerr << "Too few elements in array" << std::endl;
return 1;
}
std::vector<int>::iterator min = std::min_element(vec.begin(), vec.end());
std::vector<int>::iterator max = std::max_element(vec.begin(), vec.end());
if (*min == *max)
{
std::cerr << "Min and max are equal" << std::endl;
return 1;
}
bool flg = min < max;
int sum = std::accumulate(flg ? min + 1 : max + 1, flg ? max : min, 0);
std::cout << "Sum is: " << sum << std::endl;
}
Задача 3:
Цитата:
#include <stdio.h>
#include <conio.h>

#define STR_SIZE 80
#define STR_SIZE_S "80"

int main()
{
char input[STR_SIZE + 1];
int i, j, do_decrypt = 0;

printf("Your string: ");

if(scanf("%" STR_SIZE_S "[^\n]", input) != 1)
{
printf("Empty string\n");
return 1;
}

for(i = 0; i < STR_SIZE && input[i] != 0; i++)
{
if(input[i] >= '0' && input[i] <= '9')
{
do_decrypt = 1;
break;
}
}

for(i = 0; i < STR_SIZE && input[i] != 0; i++)
{
if(input[i] >= 33 && input[i] <= 99 && do_decrypt)
{
for(j = 128; j > 0; j /= 2)
printf("%c", input[i] & j ? '1' : '0');
}
else
{
printf("%c", input[i]);
}
}

getch();

return 0;
}
Gruvi вне форума   Ответить с цитированием
Старый 30.10.2012, 23:34   #3 (permalink)
moretti
Новичок
 
Регистрация: 30.10.2012
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Gruvi Посмотреть сообщение
Задача 1:


Задача 3:
Нет вопросов по 3-ей задаче, но если честно, я не понял первую, очень непонятным языком написано, можешь помочь разобраться или более простым языком написать, если не трудно
moretti вне форума   Ответить с цитированием
Старый 30.10.2012, 23:44   #4 (permalink)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 10.03.2011
Сообщений: 766
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
По умолчанию

Вот тебе задача 1 на паскале, разбирайся:
Цитата:
uses crt;
const n=20;
var a:array[1..n] of integer;
i,imax,imin:byte;
max,min,sum:integer;
begin
clrscr;
randomize;
writeln('Massiv:');
for i:=1 to n do
begin
a[i]:=random(20);
write(a[i],' ');
end;
writeln;
max:=a[1];min:=a[1];imax:=1;imin:=1;
for i:=1 to n do
if a[i]>max then
begin
max:=a[i];
imax:=i;
end
else if a[i]<min then
begin
min:=a[i];
imin:=i;
end;
writeln('Imax=',imax,' Imin=',imin);
if imax<imin then
begin
sum:=0;
for i:=imax+1 to imin-1 do
sum:=sum+a[i];
end
else if imax>imin then
begin
sum:=0;
for i:=imin+1 to imax-1 do
sum:=sum+a[i];
end;
writeln('Summa=',sum);
readln
end.
Gruvi вне форума   Ответить с цитированием
Старый 30.10.2012, 23:45   #5 (permalink)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 10.03.2011
Сообщений: 766
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
По умолчанию

Вот только компилятор другой (первую задачу не я писал)

Цитата:
#include <algorithm>
#include <boost/algorithm/minmax_element.hpp>

typedef std:air<const int*, const int*> minmax_result;

const int N = 10;

// для примера последовательность содержит случайные числа
static void fill_array(int* parray, size_t dimension)
{
std::generate_n(parray, dimension, std::rand);
}

void test1()
{

/*
1. Дана последовательность из 10 целых чисел. Найти сумму чисел
этой последовательности, расположенных между максимальным и
минимальными числами (в сумму включить и оба этих числа).
*/

int arr[N];
fill_array(arr, N);

// ищем индексы минимального и максимального элементов
minmax_result minmax = boost::minmax_element(arr, arr+N);
ptrdiff_t diff = minmax.first - minmax.second;

// суммирование
int sum;

// учтём, что индексы миниального и максимального элемента могут располагаться в массиве как угодно
// друг относительно друга.
if (diff > 0)
{
sum = std::accumulate(minmax.second, minmax.first, *minmax.first);
}
else
{
sum = std::accumulate(minmax.first, minmax.second, *minmax.second);
}
}
Gruvi вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 13.11.2012, 10:55   #6 (permalink)
moretti
Новичок
 
Регистрация: 30.10.2012
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Все решил,если будет кому интересно - напишу коды
moretti вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 22:40.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.