Консультация № 188060
27.09.2015, 14:02
0.00 руб.
30.09.2015, 12:24
0 2 1
Для последовательности целых чисел заданной длины N (вводится в диалоге с пользователем)
подсчитать общую сумму и количество элементов заданной последовательности, которые расположены
между первым нечетным элементом последовательности и последним элементом, значение которого
равно его порядковому номеру. Ниже есть кусочек программы.


Приложение:
#include <stdio.h>
void main ( )
{
int summ=0, i, a, N;
printf("\nInput beginning and end of period\n");
scanf("%d%d", &a,&N);
for(i=a; i<N; i++)
if (i%3==0)
{
summ+=i;
printf("%d+", i);
}
printf("\b=%d", summ);
return;
}

Обсуждение

давно
Старший Модератор
31795
6196
27.09.2015, 19:11
общий
Адресаты:
Само задание очень "туманное".
1)Вы проверяете индексы массива на четность деля на три?
2)Где сама последовательность целых чисел?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
7438
7205
29.09.2015, 15:33
общий
это ответ
Здравствуйте, Посетитель - 398981!
Рискну предложить свое решение, как я его понял :)
Вводим числа N - количество всех чисел, затем вводим N чисел,
для которых запрашиваем динамическую память в куче.
Затем находим индексы первого нечетного и последнего,
равного своему индексу (считаем с 1!)
Ну и, наконец, подсчитываем и складываем все числа, которые
попадают между найденными индексами.
[code h=200]#include <stdio.h>
#include <malloc.h>
/*
Для последовательности целых чисел заданной длины N (вводится в диалоге с пользователем)
подсчитать общую сумму и количество элементов заданной последовательности,
которые расположены между первым нечетным элементом последовательности
и последним элементом, значение которого равно его порядковому номеру.
*/

void main ( )
{
int summ; //искомая сумма
int count; //искомое количество элементов
int i; //индексная переменная для цикла
int *a=NULL;//указатель динамического массива вводимых чисел
int N=0; //вводимое количество чисол
int i1; //индекс первого нечетного элемента
int i2; //индекс последнего равного своему индексу (считаем с 1!)

//вводим число элементов
printf("\nEnter numbers count N = ");
scanf("%d", &N);
//проверим на положительность
if (N>0)
{
//выделим память в куче для вводимых чисел
a = (int*)malloc(N*sizeof(int));

//вводим N чисел или разделенных пробелом, или с новой строки
printf("\nEnter numbers:\n");
for(i=0; i<N; i++)
scanf("%d", &a[i]);

//найдем первый нечетный элемент
for(i=0; i<N; i++)
{
//будем проверять младший бит
if (a[i]&1 != 0)
{
//нашли - запоминаем его индекс
i1 = i;
//уходим из поиска
break;
}
}
//если ничего не нашли, то i пробежит до конца и станет равной N!
//проверим, нашли ли что-то
if (i == N)
//нет - выводим сообщение и уходим
printf("\nOdd element not found!\n");
else
{
//найдем последний элемент, равный своему индексу
//идем с конца массива и до найденного ранее индекса i1!
for(i=N-1; i>i1; i--)
{
//считаем с 1, поэтому сравниваем с i+1 !
if (a[i] == i+1)
{
//нашли - запоминаем его индекс
i2 = i;
//уходим из поиска
break;
}
}

//если ничего не нашли, то i пробежит до i1!
//проверим, нашли ли что-то
if (i == i1)
//нет - выводим сообщение и уходим
printf("\nElement equal index not found!\n");
else
{
//Ура! Все найдено! Считаем!

count = 0; //обнулим счетчик чисел
summ = 0; //и сумму

//начинаем считать со следующего за первым нечетным (i1+1)
// и не доходя до i2
for(i=i1+1; i<i2; i++)
{
count++; //считаем количество
summ += a[i]; //и их сумму
}
//выводим результат
printf("\nSumma = %d, Count = %d\n", summ, count);
}
}
//освобождаем память
free(a);
}
else
//если было введено НЕположительное N
printf("\nEnter positive number!\n");
}
[/code]
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа