Дан массив целых чисел длиной n и целое число m. Для каждого участка из m
стоящих рядом членов подсчитать его сумму (и вывести результат на печать).
Общее число действий должно быть порядка n.
Другие языки программирования и технологии
Нужна помощь в решении данной задачи на Си.
#include ctime // в <>
#include iostream
uses namespace std;
// эти обязательно
int main(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "rus");
srand(time(0));
int n; int m;
int q = 0; int sum = 0;
cout << "Введите длину массива" << endl;
cin >> n;
cout << "Введите m" << endl;
cin >> m;
int *arr= new int[n];
for (int i = 0; i < n; i++)
{
arr[i] = (rand() % 100 + 1 / rand() % 5 + 1) * 2 / 3; //заполнение массива случайными числами
cout << "array[" << i << "] = " << arr[i] << endl;
}
//начало алгоритма
int h = m;
while (q < n)
{
for (int l=0 ; l < n;l+=m)
{
for (int i = l; i < h; i++)
{
if (i < n)
{
sum += arr[i];
q++;
}
}
cout <<"Участок №"<<h/m<<". Сумма равна "<< sum<< endl;
sum = 0;
h += m;
}
}
_getch();
return 0;
}
Надеюсь я правильно понял задание:
считать отрезки из m елементов
#include iostream
uses namespace std;
// эти обязательно
int main(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "rus");
srand(time(0));
int n; int m;
int q = 0; int sum = 0;
cout << "Введите длину массива" << endl;
cin >> n;
cout << "Введите m" << endl;
cin >> m;
int *arr= new int[n];
for (int i = 0; i < n; i++)
{
arr[i] = (rand() % 100 + 1 / rand() % 5 + 1) * 2 / 3; //заполнение массива случайными числами
cout << "array[" << i << "] = " << arr[i] << endl;
}
//начало алгоритма
int h = m;
while (q < n)
{
for (int l=0 ; l < n;l+=m)
{
for (int i = l; i < h; i++)
{
if (i < n)
{
sum += arr[i];
q++;
}
}
cout <<"Участок №"<<h/m<<". Сумма равна "<< sum<< endl;
sum = 0;
h += m;
}
}
_getch();
return 0;
}
Надеюсь я правильно понял задание:
считать отрезки из m елементов
Сергей Кушков
Cпасибо, буду разбираться.
Префиксная сумма.
http://pastebin.com/5zLcf6re
http://pastebin.com/5zLcf6re
Идёшь циклом по массиву, суммируя результат в одну переменную.
Доходя до m, получаешь первую сумму. Её можно выводить.
После m, суммируешь следующее число, и вычитаешь первое. Получаешь сумму m чисел из массива от второго до текущего. На следующем проходе опять добавляешь следюущее, и вычитаешь второе. И так далее.
Доходя до m, получаешь первую сумму. Её можно выводить.
После m, суммируешь следующее число, и вычитаешь первое. Получаешь сумму m чисел из массива от второго до текущего. На следующем проходе опять добавляешь следюущее, и вычитаешь второе. И так далее.
Сергей Кушков
Благодарю. Дело в том, что алгоритм мне понятен. Я не совсем корректно задал вопрос. Проблема заключается именно в реализации данного алгоритма на Си.
Сергей Кушков
int main()
{
setlocale(LC_ALL,"rus");
int n,i,,s,k,y;
printf("ВВЕДИТЕ m: ");
scanf("%i",&m);
printf("ВВЕДИТЕ n: ");
scanf("%i",&n);
int a[n];
printf("ВВЕДИТЕ ПОСЛЕДОВАТЕЛЬНОСТЬ ИЗ %i ЭЛЕМЕНТОВ: \n",n);
for(k=0;k<n;k++) //цикл для ввода элементов массива
{
scanf("%i",&a[i]);
}
s=0;
for(i=0;i<m;i++) //цикл для подсчета суммы
{
s=s+a[i];
}
Не уверен, что последний цикл верный. Проблема в том, что я не знаю как мне из участка убрать первое число и добавить последнее.
{
setlocale(LC_ALL,"rus");
int n,i,,s,k,y;
printf("ВВЕДИТЕ m: ");
scanf("%i",&m);
printf("ВВЕДИТЕ n: ");
scanf("%i",&n);
int a[n];
printf("ВВЕДИТЕ ПОСЛЕДОВАТЕЛЬНОСТЬ ИЗ %i ЭЛЕМЕНТОВ: \n",n);
for(k=0;k<n;k++) //цикл для ввода элементов массива
{
scanf("%i",&a[i]);
}
s=0;
for(i=0;i<m;i++) //цикл для подсчета суммы
{
s=s+a[i];
}
Не уверен, что последний цикл верный. Проблема в том, что я не знаю как мне из участка убрать первое число и добавить последнее.
Похожие вопросы
- Нужна помощь в решении задачи по С++ связанная с матрицами
- задача на С++, нужна помощь в решении
- Нужна помощь с решением задачи на С++ через Visual Studio
- Нужна помощь в решении задачи по языку программирования С++!!срочно!
- Нужна помощь в решении задач на Циклы и простейшие программы
- Каков алгоритм решения данной задачи, где копать?
- Какой алгоритм для решения данной задачи в Кумире?
- Нужна помощь в понимание выражения return в Си на данном примере
- Нужна помощь в решении задачки на паскале )
- Ребята, нужна помощь в создании сайта. Задача: сайт посвященный косметике, желательно шаблон на DLE, Joomla. Подробнее .