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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2022, 21:43   #1
bakyy
Новичок
Джуниор
 
Регистрация: 21.10.2022
Сообщений: 1
По умолчанию Тема массивы,функции,указатели язык С++

Напишите функцию, которая находит сумму элементов, находящихся между первыми двумя нулями.
вход:
8
0 1 1 1 1 1 1 0
выход:
6
мой код:
Код:
#include <iostream>
using namespace std;

int start(int* mass, int n, int starter_point);
int end(int* mass, int starter_point, int n, int end_point);

int sum(int* mass, int starter_point, int n, int end_point,int suM);

int start(int* mass, int n, int starter_point) {
	for (int i = 0; i < n; i++) {
		if (mass[i] == 0) {
			starter_point = i;
			break;
		}
	}
	return starter_point;
}
int end(int* mass, int starter_point, int n, int end_point) {
	for (int i = starter_point; i < n; i++) {
		if (mass[i] == 0) {
			end_point = i;
			break;
		}
	}
	return end_point;
}
int sum(int* mass, int starter_point, int n, int end_point, int suM) {
	for (int i = starter_point; i < end_point; i++) {
		suM = suM + mass[i];
	}
	cout << suM;
	return 0;
}
int main() {
	int mass[101];
	int n;
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> mass[i];
	}
	int start(int* mass, int n, int starter_point);
	int end(int* mass, int starter_point, int n, int end_point);
	int sum(int* mass, int starter_point, int n, int end_point, int suM);
	return 0;
}

Последний раз редактировалось BDA; 21.10.2022 в 22:35.
bakyy вне форума Ответить с цитированием
Старый 21.10.2022, 21:59   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от bakyy Посмотреть сообщение
Код:
int start(int* mass, int n, int starter_point) {
for (int i = 0; i < n; i++) {
if (mass[i] == 0) {
starter_point = i;
break;
}
}
return starter_point;
}
А почему у вас переменная возвращаемого значения описана в параметрах. Не обязательно перывать цикл по break, можно сразу return i;

Цитата:
Сообщение от bakyy Посмотреть сообщение
Код:
int end(int* mass, int starter_point, int n, int end_point) {
for (int i = starter_point; i < n; i++) {
if (mass[i] == 0) {
end_point = i;
break;
}
}
return end_point;
}
И опять те же замечания по поводу end_point.


Цитата:
Сообщение от bakyy Посмотреть сообщение
int sum(int* mass, int starter_point, int n, int end_point, int suM) {
for (int i = starter_point; i < end_point; i++) {
suM = suM + mass[i];
}
cout << suM;
return 0;
}
Если не собирались возвращать suM, тогда зачем тип int как результат работы функции. Опять те же замечания по поводу suM. Зачем вам параметр int n, если вы и так определили int end_point.
Все можно сделать в двух последовательных циклах без такой заморочки.
Код:
#include <iostream>

int GetSum(int *mass; int n) {
  int i = 0, s = 0;
  while (i < n && mass[i++]);
  for (i++; i < n && mass[i]; s += mass[i++]);
  return s;
}

int main(int argc, char *argv[]) {
  int n = 0;
  // тут вводите n
  int *mass = new int[n];
  // тут вводите массив
  std::cout << GetSum(mass, n);
  delete[] mass;
  return 0;
}
macomics вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы и указатели (язык cи) denis popov Помощь студентам 0 05.01.2013 18:00
Тема Указатели! Pascal ElenCelsi Помощь студентам 17 07.01.2011 22:49
Указатели. Функции. Динамические массивы Exorcist2012 Помощь студентам 0 25.06.2010 01:21
Задачка для Бонард Си... тема: указатели и массивы... Катюшенька Помощь студентам 2 26.01.2009 22:18