C/C++

Программа на C/C++

В одномерном массиве, состоящем из n элементов, вычислить произведение элементов массива, между первым и последним отрицательными элементами. массив уже есть
#include
#include
#include
#define n 50
int main()
{
int N, i, mass[n];
N=0;
srand(time(NULL));
for (i = 0; i < n; i++) {
if(i%5==0) printf("\n");
mass[i] = rand()%100;
printf("%4d ",mass[i]);
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define RAND(min, max) (rand() % ((max) - (min)) + (min))
void fill(int* box, size_t n) {
size_t i = 0;
srand((unsigned)time(NULL));
while (i < n) {
do box[i] = RAND(-9, 10); while (!box[i]);
++i;
}
}
void show(int* box, size_t n) {
size_t i = 0;
while (i < n) {
printf("%5i", box[i]);
++i;
}
puts("");
}
int pos_first_neg(int* box, int n) {
int i = 0;
while (i < n) {
if (box[i] < 0) break;
++i;
}
return i;
}
int pos_last_neg(int* box, int n) {
int i = n - 1;
while (i >= 0) {
if (box[i] < 0) break;
--i;
}
return i;
}
int main(void) {
size_t n = 12;
int first, last;
int* box = (int*)malloc(n * sizeof(int));
fill(box, n);
show(box, n);
first = pos_first_neg(box, n) + 1;
last = pos_last_neg(box, n);
if (first < last) {
double m = 1.0;
while (first < last) {
m *= box[first];
++first;
}
printf("Result: %.0lf\n", m);
} else {
puts("Not found!");
}
system("pause > nul");
return 0;
}
СН
Смирнов Николай
82 438
Лучший ответ
Расширенный Си:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
int a, b, i, n, x, y; cout << "a b n » ";
cin >> a >> b >> n; srand(time(NULL));
int *A = new int [n]; for (i = 0; i < n; i++)
A[i] = a + rand() % (b - a + 1);
for (i = 0; i < n; i++) if (A[i] < 0) { x = i; break; }
for (i = n - 1; i >= 0; i--) if (A[i] < 0) { y = i; break; }
double p = 1; if (y - x) for (i = x + 1; i < y; i++)
p *= A[i]; cout.precision(17); cout << p << endl;
system("pause > nul"); return 0;
}
P.S. Произведение элементов, особенно если их много, может не вписаться в стандартные типы long long int, double и даже в long double..
Сергей Широков
Сергей Широков
29 440
а как ты получишь отрицательные элементи, если у тебя диапазон рандомизации от 0 до 100?
Дмитрий Романов Моя ошибка. Будет mass[i] = rand()%100-50;