Задача на си, несложная вроде на сложение
Дано натуральное число n, действительные числа a1, a2,....an
Вычислить
a1,a1+a2,.....,a1+a2+....+an
#include <conio.h>
#define maxnum 1000
void main()
{
clrscr();
int n;
float a[maxnum];
scanf("%d",&n);
for(int i=0; i<n; i++)
scanf("%f",&a);
float s=0;
for(i=0; i<n; i++)
printf("%.2f\n",s=s+a);
getch();
}
Если надо сохранить результат заведи еще один массив, тогда будет:
r[0]=a[0];
for(i=1; i<n; i++)
r=r[i-1]+a;
только s уже будет ненужно
P.S. Если большие числа может понадобиться double float
[COLOR="Red"]Оформляем код по Правилам.Следующий раз за такое оформление - получишь нарушение.[/COLOR]модератор.
int n;
expression syntax in function main
float a[maxnum];
то же самое
scanf("%d",&n);
n не определена в мэйне
Я переделал файл в .срр, помогло, но хотелось бы на СИ.
Плюс я непонимаю какие числа вводить он выдает ошибку
Сначало число элементов (целое), потом перечисляешь элементы (дробное)
если да то допиши, там только будет в конце перед getch();
Код:
for(i=0; i<n; i++)
printf("%.2f\n",r);
Прога точно рабочая, примеров 10 прогнал.
Надеюсь код правильно оформил
Дано натуральное число n, действительные числа a1, a2,....an
Вычислить
a1,a1+a2,.....,a1+a2+....+an
int main()
{
unsigned int n = 0;
float a;
unsigned int i = 0;
float s = 0;
scanf("%d",&n);
for (i = 0; i < n; i++)
{
scanf("%f",&a);
s += a;
printf("%f ",s);
}
return 0;
}
почему 2 так и остаеться...задание же на сложение
почему 2 так и остаеться...задание же на сложение
Вводим n = 3, а затем только первое число из трех 2. Первый элемент ряда равен 0 + 2, т. е. 2. А для дальнейшего расчета необходимо ввести еще числа, в данном случае - еще два. В данном случае программа просто выводит текущий элемент ряда после получения нового элемента.
a1, a1+a2, затем а1+а2+а3+а4+аn
зачем требовать с пользователя все а. смысл в том чтоб требовалось Н
смысл теряеться. зачем вообще н тогда? было бы просто сложение чисел. вводим 16 а, складываем их. А тут надо ввести первые а, и уже как бы складывать с аn
a1, a1+a2, затем а1+а2+а3+а4+аn
Код как раз вычисляет ряд a1, a1 + a2, a1 + a2 + a3,..., a1 + a2 + ... + an
Если напрягает вывод результатов вместе с вводом исходной последовательности, то можно подкорректировать код:
int main()
{
unsigned int n = 0;
float a[256];
unsigned int i = 0;
float s = 0;
scanf("%d",&n);
for (i = 0; i < n; i++)
{
scanf("%f",&a);
}
for (i = 0; i < n; i++)
{
s += a;
printf("%f ",s);
}
return 0;
}
В данном случае количество элементов ограничено 256.
зачем требовать с пользователя все а.
А разве программа обладает телепатией? Откуда она будет знать значения элементов исходной последовательности?
смысл в том чтоб требовалось Н
смысл теряеться. зачем вообще н тогда?
Чтобы знать количество элементов исходной последовательности.
было бы просто сложение чисел. вводим 16 а, складываем их. А тут надо ввести первые а, и уже как бы складывать с аn
Я не телепат и точно понять, что имееется в виду не могу. Для получения ожидаемого результата необходимо поставить конкретную задачу. Я понял задание как: "Задана последовательность из n элементов a1, a2, ..., an. Необходимо вычислить значения элементов ряда a1, a1 + a2, ..., a1 + a2 + ... + an".
результат его действия при вводе чисел
4(n)
1
2
2
3
будет
3.00000 3.00000 3.000000
то есть 3 раза записанное максимальное из введеных чисел
а должно быть
1.000000 3.00000 8.00000
Нашел ошибку. вотп равильный код
#include <stdio.h>
int main()
{
unsigned int n = 0;
float a[256];
unsigned int i = 0;
float s = 0;
clrscr();
printf("n: ");
scanf("%d",&n);
for (i = 0; i < n; i++)
{
printf("a[%d]", i+1);
scanf("%f",&a);
}
for (i = 0; i < n; i++)
{
s +=a;
printf("%f ",s);
}
return 0;
}
{
printf("a[%d]", i+1);
scanf("%f",&a);
}