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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2012, 23:30   #1
Fazer77777
Пользователь
 
Регистрация: 30.06.2012
Сообщений: 11
По умолчанию Задачи на Одномерные массивы, Процедуры и функции на C++

Всем привет! Прошу помощи в решении следущих задач, которые впрочем можно решить на Borland C++ Builder или Visual C++:

Array:

Array41. Дан массив размера N. Найти два соседних элемента, сумма которых максимальна, и вывести эти элементы в порядке возрастания их индексов.

Array81. Дан массив размера N и целое число K (1 меньше или равен K < N). Осуществить сдвиг элементов массива вправо на K позиций (при этом A[1] перейдет в A[K+1], A[2] — в A[K+2], …, A[N–K] — в A[N], а исходное значение K последних элементов будет потеряно). Первые K элементов полученного массива положить равными 0.

Proc:

Proc20.
Описать функцию TriangleP(a, h), находящую периметр равнобедренного треугольника по его основанию a и высоте h, проведенной к основанию (a и h — вещественные). С помощью этой функции найти периметры трех треугольников, для которых даны основания и высоты. Для нахождения боковой стороны b треугольника использовать теорему Пифагора:
b{2} = (a/2){2} + h{2}.

Выражения в [...]-нижний регистр. Выражния {}-верхний регистр (в данном случае квадрат).

Ничего преподавателями не обяснялось. Все задачи самостоятельные. Идёт очень туго. Предыдущие решил, остались эти 3 до получения зачёта. Кто обладает знаниями в этой сфере прошу откликнуться.
Fazer77777 вне форума Ответить с цитированием
Старый 30.06.2012, 23:40   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Цитата:
Сообщение от Fazer77777 Посмотреть сообщение
Ничего преподавателями не обяснялось.
Сейчас везде так. Ещё и экология плохая - по 3 месяца студенты болеют. Да и работать надо, а на учёбу времени не хватает... Как тут не помочь то? Говори что не получается, да и попытки свои выкладывай.
eoln вне форума Ответить с цитированием
Старый 01.07.2012, 00:06   #3
Fazer77777
Пользователь
 
Регистрация: 30.06.2012
Сообщений: 11
По умолчанию

Цитата:
Сообщение от eoln Посмотреть сообщение
Сейчас везде так. Ещё и экология плохая - по 3 месяца студенты болеют. Да и работать надо, а на учёбу времени не хватает... Как тут не помочь то? Говори что не получается, да и попытки свои выкладывай.
Серьёзно не объясняют, на самостоятельно дают, такая у них система, как хочешь так и решай, только обяснить способен должен.

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

Собственно вот две не рабочее мои попытки:

Код:
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <math.h>
 using namespace std;

int main()
{
	int N,K,i,l,b,c;
int A;
cout <<"Vvedite N=";
cin >> N;
cout <<"Vvedite K=";
cin >> K;
float a[10];
for(i=0;i<N;i++)
{
cout <<" Vvedite element massiva=";
cin >> a[i];
}
l=a[0];
for(i=0;i<N+K;i++)
  {
   a[i]=a[i+K];
cout <<"\n Novui element massiva="<<a[i];
  }
  cout <<"\n Novui element massiva="<<l;
 
getch();
}



#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <math.h>
 using namespace std;

int main()
{
	int N,K,i,l,b,c;
int A;
cout <<"Vvedite N=";
cin >> N;
cout <<"Vvedite K=";
cin >> K;
float a[10];
for(i=0;i<N;i++)
{
cout <<" Vvedite element massiva=";
cin >> a[i];
}
l=a[0+K];
for(i=0;i<N+K;i++)
  {
   a[i]=a[i+K];
cout <<"\n Novui element massiva="<<a[i];
  }
  cout <<"\n Novui element massiva="<<l;
 
getch();
}
Обе Array81. С остальными примеров схожих нет, и не знаю как вобще хоть как-то попытаться.

Последний раз редактировалось Fazer77777; 01.07.2012 в 00:25.
Fazer77777 вне форума Ответить с цитированием
Старый 01.07.2012, 02:24   #4
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

41
Код:
int main()
{
	int N,i,c,max;
	cout <<"Vvedite N=";
	cin >> N;
	float a[N];
	for(i=0;i<N;i++)
	{
		cout <<" Vvedite element massiva=";
		cin >> a[i];
	}
	max=a[1]+a[2];
	c=1;
	for(i=2;i<N-1;i++) if (a[i]+a[i+1]>max)
	{
		c=i;
		max=a[i]+a[i+1];
	}
	cout <<"\n max element massiva="<<a[c]<<" and "<<a[c+1];
	getch();
}
81
Код:
int main()
{
	int N,K,i;
	cout <<"Vvedite N=";
	cin >> N;
	cout <<"Vvedite K=";
	cin >> K;
	float a[N];
	for(i=0;i<N;i++)
	{
		cout <<" Vvedite element massiva=";
		cin >> a[i];
	}
	for(i=N-1;i>=0;i--)
	{
		if (i<K) a[i]=0; else
		a[i]=a[i-K];
	}
	for(i=0;i<N;i++)
		cout << a[i]<<" ";
	getch();
}
20
Код:
float TriangleP(float a, float h) {
	float b=pow( ( h*h + a*a/4 ), 0.5 );
	return 2*b+a;
}

int main()
{
	float a,h;
	cout <<"Vvedite a=";
	cin >> a;
	cout <<"Vvedite h=";
	cin >> h;
	cout << TriangleP(a, h);
	getch();
}
eoln вне форума Ответить с цитированием
Старый 01.07.2012, 14:16   #5
Fazer77777
Пользователь
 
Регистрация: 30.06.2012
Сообщений: 11
По умолчанию

eoln, спасибо огромное! В кодах есть некоторые небольшие ошибочки, но я их исправил. Вобщем Тысяча Благодарностей!
Fazer77777 вне форума Ответить с цитированием
Старый 02.07.2012, 16:57   #6
Fazer77777
Пользователь
 
Регистрация: 30.06.2012
Сообщений: 11
По умолчанию

Ещё раз спасибо! Подскажите с ещё одной похожей задачкой для одногруппника, практически тоже самое, но решить почему-то не получается. Причём более сложную как-то решили и осталось у него одна эта:

Array82.
Дан массив размера N и целое число K (1 меньше или равен K < N). Осуществить сдвиг элементов массива влево на K позиций (при этом A[N] перейдет в A[N-K], A[N-1] — в A[N–K-1], …, A[K+1] — в A[1], а исходное значение K первых элементов будет потеряно). Последние K элементов полученного массива положить равными 0.

Жирным выделил всю разницу, блин вроде и пример похожий теперь есть, но не получается. Вобщем помогите ту преправить, и мой друг-одногруппник тоже, как и я, будет безмерно рад

Последний раз редактировалось Fazer77777; 02.07.2012 в 17:11.
Fazer77777 вне форума Ответить с цитированием
Старый 02.07.2012, 22:00   #7
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Код:
for(i=0;i<N-K;i++) a[i]=a[i+K];
for(i=N-K;i<N;i++) a[i]=0;
eoln вне форума Ответить с цитированием
Старый 02.07.2012, 22:56   #8
Fazer77777
Пользователь
 
Регистрация: 30.06.2012
Сообщений: 11
По умолчанию

Цитата:
Сообщение от eoln Посмотреть сообщение
Код:
for(i=0;i<N-K;i++) a[i]=a[i+K];
for(i=N-K;i<N;i++) a[i]=0;
Спасибо! Но в этом случае, программа выдаёт те же самые элементы массива, что были заданы изначально, на сколько я понимаю, исправления вот такие:

Код:
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <math.h>
 using namespace std;


int main()
{
	int N,K,i;
	cout <<"Vvedite N = ";
	cin >> N;
	cout <<"Vvedite K = ";
	cin >> K;
	float a[10];
|-> for(i=0;i<N-K;i++) <-| 
	{
		cout <<" Vvedite element massiva = ";
		cin >> a[i];
	}
|-> 	for(i=N-K;i<N;i++)  <-|
	{
		if (i<K) a[i]=0; 
		else |-> a[i]=a[i+K]; <-|
	}
|-> for(i=0;i<N-K;i++) <-|
		cout << a[i]<<" ";
	getch();
	return 0;
}
Но я скорее всего ошибаюсь)

Последний раз редактировалось Fazer77777; 02.07.2012 в 23:05.
Fazer77777 вне форума Ответить с цитированием
Старый 02.07.2012, 23:17   #9
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Нет, это вместо куска
Код:
	for(i=N-1;i>=0;i--)
	{
		if (i<K) a[i]=0; else
		a[i]=a[i-K];
	}
eoln вне форума Ответить с цитированием
Старый 02.07.2012, 23:24   #10
Fazer77777
Пользователь
 
Регистрация: 30.06.2012
Сообщений: 11
По умолчанию

Цитата:
Сообщение от eoln Посмотреть сообщение
Нет, это вместо куска
Код:
	for(i=N-1;i>=0;i--)
	{
		if (i<K) a[i]=0; else
		a[i]=a[i-K];
	}
Всё работает! Спасибо огромное вам от моего таварища

P.S. Посоветуйте, пожайлуйста, с каких действительно полезных книг с практическими примерами по С++, можно начать осваивать?

Последний раз редактировалось Fazer77777; 02.07.2012 в 23:33.
Fazer77777 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачи на одномерные и двухмерные массивы Drug1011 Паскаль, Turbo Pascal, PascalABC.NET 10 22.03.2012 23:14
Задачи на C++ на одномерные массивы Many man Помощь студентам 17 29.04.2011 16:59
2 задачи на одномерные массивы spankyham Паскаль, Turbo Pascal, PascalABC.NET 40 07.04.2009 23:40
3 задачи на одномерные массивы Rise Паскаль, Turbo Pascal, PascalABC.NET 10 08.01.2009 00:00
задачи на одномерные массивы в VBA fidot Помощь студентам 1 25.12.2008 16:47