Страница 1 из 2
Массивы, но массивы не использовать.
Добавлено: 16 янв 2008, 21:00
Бабочка
Отредактируйте, пожалуйста мой код!!
Задание: Даны положительные числа N,a1,...,aN. Используя только элементарные матем. операции(+,-,*,/), определить сумму непарных и произведение парных членов последовательности а1,...,аN. Массивы не использовать.
Написала код, но он сумму считает не правильно, а произведение вообще не считает.
Скажите, пожалуйста,что в нем не так!!!
Код: Выделить всё
# include <iostream.h>
# include <conio.h>
# include <stdio.h>
int main()
{
int S,P;
int a,i;
S=0;
P=1;
cout<<"Vvedite chisla a"<< endl;
cin>>a;
for (i%2==1;i<=a;i++)
{S=S+i;}
cout<<S;
for (i%2==0;i<=a;i++)
{P=P*i;}
cout<<P;
getch();
return 0;
}
Re: Массивы, но массивы не использовать.
Добавлено: 16 янв 2008, 23:25
Vanush
Напиши for(i=2;i<=a;i+=2)
A что касается i%2==1 это возвращает true или false
Прочитай for
Re: Массивы, но массивы не использовать.
Добавлено: 17 янв 2008, 08:33
Бабочка
Все равно выдает непонятное число. ВВожу 2,3,1-результат 278?
.
Добавлено: 17 янв 2008, 12:36
BBB
Вообще не понятен алгоритм, который реализован:
Тут считается сумма целых чисел от 2 до a включительно:
Бабочка писал(а):
for (i=2;i<=a;i++)
{S=S+i;}
cout<<S;
Тут - произведение целых чисел от 2 до a включительно:
for (i = 2;i<=a;i++)
{P=P*i;}
А насчет ввода, то я вообще вижу, что во время рабоут ввод запрашивается лишь два
раза:
cin>>a;
getch();
Как тут вообще вводится последовательность чисел???
Еще хотелось бы уточнить термины "парные члены" и "непарные члены". Что это такое?
Re: Массивы, но массивы не использовать.
Добавлено: 17 янв 2008, 13:44
Vanush
Это пригодиться?
Код: Выделить всё
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main()
{
int a;
cout<<"Vvedite a: ";
cin>>a;
int s=0;
for(int i=1;i<=a;i+=2)
s+=i;
cout<<s<<endl;
int p=1;
for(int i=2;i<=a;i+=2)
p*=i;
cout<<p<<endl;
return 0;
}
Re: Массивы, но массивы не использовать.
Добавлено: 17 янв 2008, 13:48
Romeo
Код: Выделить всё
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
int main()
{
int S, P;
int a, ai, i;
S = 0;
P = 1;
cout<<"Vvedite kolichestvo chisel: "<< endl;
cin << a;
for (i = 0; i < a; ++i)
{
cout << "Vvedite a[" << i + 1 << "]: ";
cin >> ai;
if (i % 2)
{
P *= ai;
}
else
{
S += ai;
}
}
cout << "Summa: " << S << end;
cout << "Proizvedenie: " << P <<end;
getch();
return 0;
}
Re: Массивы, но массивы не использовать.
Добавлено: 17 янв 2008, 16:07
Бабочка
Спасибо большое. но вот мой вариант решения:
Код: Выделить всё
# include <iostream.h>
# include <conio.h>
# include <stdio.h>
int main()
{
int S,P;
int N,i,j=0,a;
S=0;
P=1;
cout<<"Vvedite chisla N"<<endl;
cin>>N;
for (i=1;i<=N;i+=1)
{
cout<<"a="<<endl;
cin>>a;
if (j==0)
{
j++;
S+=a;
}
else
{
j--;
P*=a;
};
};
cout<<S;
cout<<P;
getch();
return 0;
}
Re: Массивы, но массивы не использовать.
Добавлено: 17 янв 2008, 18:30
Albor
Объявление и инициализацию переменной можно объединить в одной строке: int S(0); int P(1); - здесь, переменная инициализируется в момент создания. Вместо конструкции i+=1; лучше использовать i++; или ++i; в операторе cout<<"a="<<endl;, если убрать endl последующий ввод данных будет размещаться сразу за знаком равно - так, наверное, удобнее для восприятия. А последний вывод в программе склеит два числа в одно - вот здесь бы endl не помешал.
Re: Массивы, но массивы не использовать.
Добавлено: 18 янв 2008, 14:37
Romeo
Советую использывать переменную типа
bool вместо переменной j. Этот тип был придуман именно для тех случаев, когда переменная может принимать ровно два разных значения: назовём их условно
true и
false.
В случае, если ты сделаешь j типа
bool, то многие вещи упростяться. Вот исправленный фрагмент кода:
Код: Выделить всё
# include <iostream.h>
# include <conio.h>
# include <stdio.h>
int main()
{
int S,P;
int N,i,a;
S=0;
P=1;
bool j = false;
cout<<"Vvedite chisla N"<<endl;
cin>>N;
for (i=1;i<=N;i+=1)
{
cout<<"a="<<endl;
cin>>a;
if (j)
{
S+=a;
}
else
{
P*=a;
}
j = !j;
}
cout<<S;
cout<<P;
getch();
return 0;
}
Re: Массивы, но массивы не использовать.
Добавлено: 18 янв 2008, 16:18
Бабочка
Да, спасибо, так удобнее.