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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2009, 17:46   #1
asd48
Пользователь
 
Регистрация: 30.11.2008
Сообщений: 32
По умолчанию Сумма трех

Нужно заполнить заполнить вектор H суммами значений каждых трёх элементов одномерного массива F в порядке их расположения. Размерность массива произвольная.
Вот код:
Код:
#include <iostream>
#include <math.h>
#include<iomanip>
using namespace std;

int main()
{
int *F,i,m,k;
int *E,j;

cout<<"Vvedite razmernost: ";
cin>>m;
k=(int) m/3;
F=new int[m];
E=new int[k];
cout<<"Vvedite vector "<<"\n";
 for(i=0;i<m;i++)cin>>F[i];
 cout<<"    Icxodnij massiv"<<endl;	       
cout<<endl;

for (i=0;i<m;i++)cout<<setw(4)<<F[i]<<"\t";
cout<<endl;
cout<<endl;
cout<<"   Novij massiv"<<endl;
cout<<endl;
j=0;
for(i=0;i<m;i=i+3)

//Условие
	  E[j]=F[i]+F[i+1]+F[i+2];
	  j++; 
//Вывод на печать
for(i=0;i<j;i++)
 cout<<setw(4)<<E[i]<<"\t";
		
	   cout<<endl;
	return 0;
}

Проблема в том, что по данному коду можно сосчитать только если размерность массива кратна трем, а нужно сделать так, например, что если я задам размерность 5, то программа вывела бы только сумму первых трех элементов, а остальные 2 элемента в расчет не брала.

Последний раз редактировалось asd48; 21.04.2009 в 19:09.
asd48 вне форума Ответить с цитированием
Старый 21.04.2009, 18:02   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

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

int main()
{
int *mas,*V,i,m,n;

cout<<"Vvedite razmernost: ";
cin>>m;

mas = new int[m];
n = (int)m/3;
V = new int[n];

cout<<"Vvedite massiv: \n";
for(i=0;i<m;i++)
 cin>>mas[i];

cout<<"\nIshodnyj massiv:\n";
for(i=0;i<m;i++)
 {
  cout.width(4);
  cout<<mas[i];
 }
cout<<endl<<"Konechnyj massiv:\n";

for(i=0;i<n;i++)
 {
  V[i] = mas[i*3]+mas[i*3+1]+mas[i*3+2];
  cout.width(4);
  cout<<V[i];
 }

delete[] mas;
delete[] V;

getch();
return 0;
}
И не забывайте очищать память!
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 21.04.2009, 18:59   #3
asd48
Пользователь
 
Регистрация: 30.11.2008
Сообщений: 32
По умолчанию

[QUOTE] mas[i*3][QUOTE] Поясните пожалуйста.
asd48 вне форума Ответить с цитированием
Старый 21.04.2009, 19:00   #4
asd48
Пользователь
 
Регистрация: 30.11.2008
Сообщений: 32
По умолчанию

Цитата:
mas[i*3]
Поясните пожалуйста, что это значит.
asd48 вне форума Ответить с цитированием
Старый 21.04.2009, 19:04   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Ну смотрите.
Допустим, есть массив:
Код:
1 2 3 4 5 6 7 8 9 10
Разобьем его на тройки (нумеруем от нуля):
Код:
1 2 3  4 5 6  7 8 9  10
   0       1       2
Нам нужны суммы этих троек.
Сумма нулевой получается так: mas[0]+mas[1]+mas[2]
А теперь смотрим, как получается сумма первой:
mas[1*3+0] + mas[1*3+1] + mas[1*3+2]
То есть, для получения значений из нужной тройки нужно прибавить к соответствующему индексу (0, 1 или 2) 3*i.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 21.04.2009, 19:09   #6
asd48
Пользователь
 
Регистрация: 30.11.2008
Сообщений: 32
По умолчанию

спасибо большое за подробное объяснение.
asd48 вне форума Ответить с цитированием
Старый 21.04.2009, 20:03   #7
asd48
Пользователь
 
Регистрация: 30.11.2008
Сообщений: 32
По умолчанию

а возможно
Цитата:
mas[i*3]
представить также в VB?
asd48 вне форума Ответить с цитированием
Старый 21.04.2009, 20:09   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
а возможно представить также в VB?
Да. Это же обычное число.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 21.04.2009, 20:19   #9
asd48
Пользователь
 
Регистрация: 30.11.2008
Сообщений: 32
По умолчанию

Код:
Private Sub Command1_Click()
Dim m As Integer
Dim F() As Integer, E() As Integer

Dim i As Integer, k As Integer

m = InputBox("Введите размернось", "Размерность")
ReDim F(m)
k = m / 3
ReDim E(k)
For i = 0 To m
    F(i) = InputBox("f" & i)
Next
Print "Исходная матрица"
For i = 0 To m
Print F(i); "   ";
Next


For i = 0 To m Step 3
E(i) = F(i) + F(i + 1) + F(i + 2)


Next
For i = 0 To k Step 3
Print ""
Print "Новый вектор"
Print E(i); "   ";
Next

End Sub
А в том же виде сделать эту строчку, как в С++ я понятия не имею.
asd48 вне форума Ответить с цитированием
Старый 21.04.2009, 20:23   #10
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
А в том же виде сделать эту строчку, как в С++ я понятия не имею.
Ну так вы же перевели на VB свой вариант. Что-то я не понимаю, что у вас не получается перевести.

Если имеете в виду это:
Код:
V[i] = mas[i*3]+mas[i*3+1]+mas[i*3+2];
то так и записывайте:
Код:
V(i) = mas(i*3)+mas(i*3+1)+mas(i*3+2);
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как составить из трех слов одно?)) Xander Microsoft Office Access 6 14.05.2009 16:29
Из трех листов перенести строки по условию Romuald Microsoft Office Excel 3 18.03.2009 16:09
Вычислить произведение P кубов трех чисел a, b и c, если их сумма меньше нуля, произведение P модулей NoUserName Помощь студентам 3 01.03.2009 18:10
Сложение трех полей buk Microsoft Office Access 2 14.03.2007 11:29
помогите сделать сравнение трех книг. khvorovs Microsoft Office Excel 2 09.12.2006 13:58