Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
kava123
0 / 0 / 0
Регистрация: 03.02.2019
Сообщений: 12
1

Найти элемент массива, значение которого наиболее близко к среднему

04.02.2019, 20:47. Просмотров 1022. Ответов 4
Метки нет (Все метки)

Проверьте как мне правильно переписать код с паскаля на c++

pascal
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Program asdfw;
var g,c,N:integer;
s,min,f:real;
a:array[1..30000] of real;
begin
read(N);
for c:=1 to N do begin
read(a[c]);
s:=s+a[c];
end;
f:=s/N;
writeln('среднее значение ',f);
min:=abs(a[1]-f);
for c:=1 to N do begin
if abs(a[c]-f)<min then begin
min:=abs(a[c]-f);
g:=c;
end;
end;
writeln('наиболее близкое ',g);
end.
c++
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
#include"pch.h"
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main()
{
    double g, c, N, s, min, f, mas[30000];
 
    cin >> N;
    cin >> s;
    for (int c = 1; c < N; c++)
        //cin >> s + mas[c];
        s = s + mas[c];
    
    f = s / N;
    cout << "Srednie zna4enie" << f;
    min = fabs(mas[1] - f);
    for (int c = 1; c < f; c++)
        if (fabs(mas[c] - f) < min)
        {
            min = fabs(mas[c] - f);
            g = c;
        }
 
    cout << "Naibol zna4enie" << g;
    return 0;
}
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2019, 20:47
Ответы с готовыми решениями:

Найти элемент массива, значение которого наиболее близко к какому-нибудь целому числу
Завтра последний день - зачет!! нужна помощь! 1. Дан вещественный массив X(N). Найти элемент...

Найти в массиве элемент значение которого наиболее близко к заданному
Помогите перевести прогу с Pascal на C++; Категорически не знаю Pascal Var Begin ...

Найти номер элемента, значение которого близко к среднему значению массива
не пойму, что не так.... #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt;...

Определить порядковый номер элемента массива, значение которого наиболее близко к некоторому целому числу
условия задачи: Определить порядковый номер элемента массива, значение которого наиболее близко к...

Найти элемент массива наиболее близкий к среднему арифметическому
Необходимо написать программу которая будет находить число, которое находится наиболее близко к...

4
Den468
29 / 17 / 14
Регистрация: 19.12.2018
Сообщений: 97
Завершенные тесты: 2
04.02.2019, 21:53 2
Не стал я читать всё это, вижу этот текст и аж глазам больно. Специально же сделали возможность указать код.
Прочитал первые строки и сразу замечание. Почему g,c, N вдруг стали double, когда должно быть int?
И что конкретно тут не работает?
0
Байт
Эксперт C
21260 / 13431 / 2834
Регистрация: 24.12.2010
Сообщений: 28,437
05.02.2019, 00:07 3
kava123, одну паскалевскую ошибку вижу. В си(++) индексация массивов начинается с нуля.
С замечанием уважаемого Den468 полностью согласен. Теги кодов умеете ставить? Научить?
0
zss
Модератор
Эксперт С++
8588 / 7549 / 4672
Регистрация: 18.12.2011
Сообщений: 20,000
Завершенные тесты: 1
05.02.2019, 07:11 4
Лучший ответ Сообщение было отмечено kava123 как решение

Решение

kava123, зачем заниматься такой глупостью (переписывать программу с другого языка а еще и с ошибками).
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
#include <iostream>
using std::cout,std::cin;
int main()
{
    //double g, c, N, s, min, f, mas[30000]; в С++ не надо заводить переменные заранее
    int N;
    cout << "Enter Size:"; // уважайте того, кто будет вводить данные
    cin >> N;
    if (N < 2 )N = 2; // не надейтесь, что введено будет то, что Вы ожидаете
    double* mas = new double[N]; // выделяем памяти столько сколько нужно, а не мифические 30000
    double s=0; // Начальное значение надо присваивать!
    for (int i = 0; i < N; i++) // для целочисленных переменных начинайте имена с букв i,j,k,l,m,n
    {
        cout << "Enter " << i << " element:";
        cin >> mas[i];
        s += mas[i];
    }
    double f = s / N;
    cout << "Average value=" << f<<"\n";
    double min = fabs(mas[0] - f);
    int ig = 0;
    for (int i = 0; i < N; i++)
        if (fabs(mas[i] - f) < min)
        {
            min = fabs(mas[i] - f);
            ig = i;
        }
    delete[] mas;
    cout << "Minimal deviation = "<<min<< " has " << ig<<" element\n";
    system("pause");
    return 0;
}
1
SomniPhobia
352 / 256 / 101
Регистрация: 22.11.2017
Сообщений: 707
05.02.2019, 18:19 5
kava123, привет!
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <xstring>
#include <string>
#include <algorithm>
#include <iterator>
#include <random>
#include <numeric>
 
using namespace std;
 
int main()
{
    system("color 0A");
    wcout.imbue(locale("rus_rus.866"));
    wcin.imbue(locale("rus_rus.866"));
 
    random_device rd;
    mt19937 g{ rd() };
    uniform_int_distribution<> uid(-10, 10);
 
    wcout << L"Укажите длину массива ";
    size_t n;
    cin >> n;
    vector<int> v;
    v.reserve(n);
    generate_n(inserter(v, v.begin()), n, [&g, &uid]() { return uid(g); });
    wcout << L"Исходный массив" << endl;
    for (const auto &value : v)
    {
        cout << value << " ";
    }
    cout << endl;
    sort(v.begin(), v.end());
    long long sum = accumulate(v.begin(), v.end(), 0);
    auto avg = static_cast<double>(sum) / v.size();
    cout << avg << endl;
    auto ub = upper_bound(v.begin(), v.end(), avg);
    wcout << L"Элемент массива, значение которого наиболее близко к среднему ";
    if (abs(*(ub - 1) - avg) < abs(*ub - avg))
    {
        cout << *(ub - 1);
    }
    else
    {
        cout << *ub;
    }
    cout << endl;
 
    system("pause");
    return 0;
}
0
Миниатюры
Найти элемент массива, значение которого наиболее близко к среднему  
05.02.2019, 18:19
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2019, 18:19

Найти элемент массива, наиболее близкий к среднему значению всех элементов массива
Найти элемент массива, наиболее близкий к среднему значению всех элементов массива. Найти среднее...

Найти и вывести элемент,наиболее близкий к среднему арифметическому всех элементов массива
Дано задание 1)Вывести массив в диапазоне -128..257 2)Найти Min &amp; Max эл-ты 3)Найти и вывести...

Найти подмножество, содержащее ровно M точек, центр тяжести которого находится наиболее близко к началу координат
Если честно я как то не могу полностью понять суть задачи, помогите желательно кодом мне срочно...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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