Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
MessageToBears
9 / 9 / 1
Регистрация: 05.12.2013
Сообщений: 65
#1

Одномерные массивы + указатели (среднее арифметическое чисел, введенных с клавиатуры) - C++

05.02.2014, 18:39. Просмотров 495. Ответов 4
Метки нет (Все метки)

День добрый. В общем не получается у меня запустить эту задачу с помощью указателей:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
int a[100],n,i; float b[100], k,p=0,s;
 
printf("Vvedite n= "); // начало заполнения массива
scanf("%d",&n);
for (i=0;i<n;i++)
{
printf("a[%d]= ",i);
scanf("%d",&a[i]);
} // конец заполнения массива
 
for (i=0;i<n;i++) {
p=p+a[i];
s=(p)/(i+1);
b[i]=s;
printf("b[%i]=%.2lf \n",i,b[i]);
}
getch();
}
Программа считает среднее арифметическое чисел, введеных с клавиатуры. Сначала считает среднее первых двух цифр, записывает в массив b, затем трех, и так далее.

Как реализовать программу с указателями? Вот то, что вышло у меня. Помогите найти ошибку:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
 
int main()
{
    int *a,n,i;
    float *b, k,p=0,s;
 
    printf("Vvedite n= "); // начало заполнения массива
    scanf("%d",&n);
 
    a=(int*)malloc(n*sizeof(int));
    b=(float*)malloc(n*sizeof(float));
 
    for (i=0; i<n; i++)
    {
        printf("a[%d]= ",i);
        scanf("%d",a+i);
    } // конец заполнения массива
 
    for (i=0; i<n; i++)
    {
        p=p+*a;
        s=(p)/(i+1);
        *b=s;
        printf("b[%i]=%.2lf \n",i,*(b+i));
    }
    free(b);
    free(a);
    getch();
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2014, 18:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Одномерные массивы + указатели (среднее арифметическое чисел, введенных с клавиатуры) (C++):

Функция , Указатели , С++ , Задачка (среднее арифметическое все введенных чисел) - C++
задание было : создать функцию , которая вводит с клавиатуры последовательность целых чисел и после ввода последнего числа выводит на...

Вывести на экран сумму и среднее арифметическое последовательности положительных чисел, введенных с клавиатуры - C++
Доброго времени суток. Помогите пожалуйста с написанием программы. &quot;Найти и вывести на экран сумму и среднее арифметическое...

Найти среднее арифметическое всех элементов массива введенных с клавиатуры - C++
1)в массиве из 5 элементов ввести все элементы с клавиатуры в цикле for и вывести на экран в прямом и обратном порядке. 2)найти среднее...

Одномерные массивы: Найти среднее арифметическое всех элементов массива - C++
Одномерные массивы Задача: Найти среднее арифметическое всех элементов массива.

Одномерные массивы (найти среднее арифметическое всех элементов массивов) - C++
Заданы два массива А(5) и B(5). В каждом из массивов найти среднее арифметическое всех элементов массивов. На печать вывести исходные...

Вывести среднее арифметическое 10-ти подряд введенных чисел. C++ - C++
Вывести среднее арифметическое 10-ти подряд введенных чисел.

4
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,926
05.02.2014, 18:53 #2
если ты пишешь для плюсов используй new
Цитата Сообщение от MessageToBears Посмотреть сообщение
a=(int*)malloc(n*sizeof(int));
C++
1
a=new int[n];
ну и удаление
C++
1
delete []a;
Цитата Сообщение от MessageToBears Посмотреть сообщение
C++
1
2
3
4
5
for (i=0; i<n; i++)
{
  printf("a[%d]= ",i);
  scanf("%d",a+i);
 }
тебе нужно именно с арифметикой работать
так нельзя?
C++
1
scanf("%d",&a[i]);
1
zss
Модератор
Эксперт С++
6403 / 5969 / 1945
Регистрация: 18.12.2011
Сообщений: 15,372
Завершенные тесты: 1
05.02.2014, 19:02 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Если только поправить ошибки, то будет так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <conio.h>
#include <stdio.h>
 
int main()
{
    int *a,n,i;
    float *b, k,p=0,s;
 
    printf("Vvedite n= "); // начало заполнения массива
    scanf("%d",&n);
 
    a=(int*)malloc(n*sizeof(int));
    b=(float*)malloc(n*sizeof(float));
 
    for (i=0; i<n; i++)
    {
        printf("a[%d]= ",i);
        scanf("%d",a+i);
    } // конец заполнения массива
 
    for (i=0; i<n; i++)
    {
        p=p+*(a+i);
        s=(p)/(i+1);
        *(b+i)=s;
        printf("b[%i]=%.2lf \n",i,*(b+i));
    }
    free(b);
    free(a);
    getch();
}
А по хорошему надо так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <conio.h>
#include <stdio.h>
 
int main()
{
    int *a,n,i;
    float *b, k,p=0,s;
 
    printf("Vvedite n= "); // начало заполнения массива
    scanf("%d",&n);
 
    a=new int[n];
    b=new int[n];
    int* pa;
    for (pa=a; pa<(a+n); pa++)
    {
        printf("a[%d]= ",i);
        scanf("%d",pa);
    } // конец заполнения массива
 
    for (float* pb=b,pa=a; pb<pb+n; pb++,pa++)
    {
        p=p+*pa;
        s=(p)/(i+1);
        *pb=s;
        printf("b[%i]=%.2lf \n",i,*pb);
    }
    delete[] b;
    delete[] a;
    getch();
}
1
MessageToBears
9 / 9 / 1
Регистрация: 05.12.2013
Сообщений: 65
05.02.2014, 19:03  [ТС] #4
На сколько я понимаю, у меня нет проблем с выводом массива на экран или записью

У меня проблема именно с указателями где-то тут:

Код
 for (i=0; i<n; i++)
    {
        p=p+*a;
        s=(p)/(i+1);
        *b=s;
        printf("b[%i]=%.2lf \n",i,*(b+i));
    }
Программа считает коряво.
Валериус, спасибо, но это не исправляет проблему.


Спасибо, ребят!
0
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,926
05.02.2014, 19:12 #5
Цитата Сообщение от MessageToBears Посмотреть сообщение
спасибо, но это не исправляет проблему.
так ты озвучь проблему то
тебе среднеарифметическое всего массива или
Цитата Сообщение от MessageToBears Посмотреть сообщение
Сначала считает среднее первых двух цифр, записывает в массив b, затем трех, и так далее.
если второе то у тебя и первое решение не правильно
сначала просто копирует первый элемент
и так и не ответил тебе нужна именно адресная арифметика
типа
Цитата Сообщение от MessageToBears Посмотреть сообщение
b+i
кстати заметь что ты не изменяешь указатель в цикле типа, b++, а тупо пишешь все по одному адресу
или можно так b[i]
с указателями можно работать как с массивами

Не по теме:

для выделения кода используй тег С++



Добавлено через 1 минуту
Цитата Сообщение от MessageToBears Посмотреть сообщение
*b=s;
попробуй так
C++
1
*(b+i)=s;
впрочем, zss, уже показал
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2014, 19:12
Привет! Вот еще темы с ответами:

Указатели. Из трех введенных с клавиатуры чисел преподнести в квадрат отрицательние а положительные оставити без изменений - C++
Из трех введенных с клавиатуры чисел преподнести в квадрат отрицательние а положительные оставити без изменений

Ввести последовательность, показать количество введенных чисел, их общую сумму и среднее арифметическое - C++
Условие : Организовать беспрерывный ввод чисел с клавиатуры, пока пользователь не введёт 0. После ввода нуля, показать на экран...

Массивы. Найти среднее арифметическое отрицательных чисел и подсчитать количество чисел, входящих в диапазон - C++
Всем привет! Начал изучать C++, сталкнулся вот с такой задачей Произвести следующую обработку 15 вещественных чисел: найти среднее...

Ввести с клавиатуры 5 дробных чисел и вычислить их среднее арифметическое - C++
2.Решить следующую задачу двумя методами: используя цикл for и используя цикл while (либо do-while). -Написать программу, которая вводит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
05.02.2014, 19:12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru