Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C (СИ) Разработка динамической структуры данных: deque https://www.cyberforum.ru/c-beginners/thread1983606.html
Здравствуйте . Есть ли у кого то пример программы записи динамической структуры в бинарный файл, и вывод оттуда . Двухсторонняя очередь , дек. Буду благодарна Добавлено через 3 минуты Видела где...
C (СИ) Работа с файлами. Работа со структурами и файлами Си
Написать программу вычисления стоимости покупки с учетом скидки. Скидка 3% предоставляется в случае, если сумма покупки больше 500 рублей, 5% - если сумма больше 1000 рублей. Исходные данные (сумма...
Выполнить команду операционной системы при поступлении сигнала C (СИ)
Есть задание: При поступлении сигнала SIGINT необходимо выполнить команду операционной системы для считывания списка файлов текущего каталога и его дозаписи в файл с названием temp.txt с указанием...
C (СИ) Определить последовательность номеров снимаемых фишек Здравствуйте! На окружности расположено n пронумерованных фишек. Первой снимается с окружности фишка с номером k. Далее, двигаясь 1) по часовой; 2)против часовой стрелки, пропускаем r фишек и... https://www.cyberforum.ru/c-beginners/thread1983518.html
C (СИ) Вычислить по формуле https://www.cyberforum.ru/c-beginners/thread1983513.html
На фото дана задача
C (СИ) Найти площадь пересечения двух многоугольников
Найти площадь пересечения двух многоугольников. Предусмотреть ввод координат и количество вершин с клавиатуры и вывод многоугольников на экран.
Дан файл f, содержащий сведения о веществах, найти удельные веса и названия всех полупроводников C (СИ)
Дан файл f, содержащий сведения о веществах: указывается название вещества, его удельный вес и проводимость (проводник, полупроводник, изолятор). Найти удельные веса и названия всех полупроводников.
C (СИ) Вывести в порядке возрастания все правильные несократимые дроби, знаменатели которых не превосходят N Требуется написать программу, которая выводит в порядке возрастания все правильные несократимые дроби, знаменатели которых не превосходят N (2<=N<=50). https://www.cyberforum.ru/c-beginners/thread1983436.html
C (СИ) Определить, сколько заданных групп символов содержится в тексте https://www.cyberforum.ru/c-beginners/thread1983416.html
Задано определенное количество конкретных сочетаний букв (например, УЩ, ЮЩ и др.). Определить, сколько таких групп символов содержится в тексте, вводимом с клавиатуры.
C (СИ) Найти наименьший периметр треугольника Здравствуйте! Помогите, пожалуйста, с решением. Дано множество A из N точек (N > 2, точки заданы своими координатами x, y). Найти наименьший периметр треугольника, вершины которого принадлежат... https://www.cyberforum.ru/c-beginners/thread1983401.html
KatrinLuxury
14 / 14 / 11
Регистрация: 14.11.2016
Сообщений: 264
20.05.2017, 21:11  [ТС] 0

Порядковый номер числа массива, который ближе всего к заданному числу

20.05.2017, 21:11. Просмотров 536. Ответов 4
Метки (Все метки)

Ответ

LFC, Можете посмотреть, что неправильно? При вводе z вещественного строка с запрос на ввод элемента дублируется, точнее и 1элемент просит и 2ой сразу. И в результате не такой ответ получается почему-то

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include<locale.h>
#include<math.h>
#include<stdlib.h>
 
const int size = 1000;
int inputn();
double inputz();
void input_mass(int _n, int *_mass);
void number_element(int _n, int *_mass, char _z);
/*--------------------------------------------------------------------*/
/*Основная часть программы*/
int main(void)
    {
        setlocale(LC_ALL, "Russian");
        int n = 0;  /*n - количество чисел*/
        char z = 0;
        int mass[size];/*массив*/
        printf("Данная программа позволяет..\n");
        n = inputn();
        z = inputz();
        input_mass(n, mass);
        number_element(n, mass, z);
        return 0;
    }
/*--------------------------------------------------------------------*/
/*Подпрограмма для ввода количества элементов массива*/
int inputn()
    {
        int ver, _n;/*ver - переменная для проверки данных данных, введённых с клавиатуры, _n - количество чисел*/
        printf("Введите количество элементов n: ");
        printf("n = ");
        do
        {
            fflush(stdin);
            ver = scanf("%d", &_n);
            if ((ver != 1) || (_n < 1))
            {
                printf("Введено не корректное значение, повторите ввод, n-целое число больше 0 \n");
                printf("n = ");
            }
        } while ((ver != 1)& ((getchar()) != '\n') || (_n < 1));
        return _n;
    }
/*--------------------------------------------------------------------*/
/*Подпрограмма для ввода заданного числа*/
double inputz()
{
    char ver;/*ver - переменная для проверки данных данных, введённых с клавиатуры, _z - число*/
    double _z;
    printf("Введите элемент z: ");
    printf("z = ");
    do
    {
        fflush(stdin);
        ver = scanf("%if", &_z);
        if (ver != 1) 
        {
            printf("Введено не корректное значение, повторите ввод\n");
            printf("число = ");
        }
    } while ((ver != 1)& ((getchar()) != '\n'));
    
    return _z;
}
/*--------------------------------------------------------------------*/
/*Подпрограмма для заполнения массива*/
    void input_mass(int _n, int *_mass)
    {
        int ver, i; /*i - счетчик цикла*/
        printf("Введите элементы массива: \n");
        for (i = 1; i <= _n; i++)
        {
            printf("%d-й элемент = ", i);
            do
            {
                fflush(stdin);
                ver = scanf("%d", &_mass[i]);
                if (ver != 1)
                {
                    printf("Введено не корректное значение \n");
                    printf("%d-й элемент = ", i);
                }
            } while ((ver != 1)& ((getchar()) != '\n'));
        }
    }
void number_element(int _n, int *_mass, char _z)
{
    int i; /*i - счетчик цикла*/
    double buf = 0, buf2 = 0,k=0;
    buf = abs(_mass[0]-_z);
    for (i = 1; i <= _n ; i++)
    {
        if (abs(_mass[i] - _z) < buf) {
            buf = abs(_mass[i] - _z);
            k = i;
        }       
    }
    printf("%d\n", k);  
}
Добавлено через 22 часа 11 минут
Программа работает, если в массиве элементы целого типа. Как сделать, чтобы была последовательность вещественных чисел? [меняла тип mass и z на double, но компилятор ругается, что нельзя совмещать int и double]

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include<locale.h>
#include<math.h>
#include<stdlib.h>
 
const int size = 1000;
int inputn();
int inputz();
void input_mass(int *_n, int *_mass);
void number_element(int *_n, int *_mass, int _z);
 
/*--------------------------------------------------------------------*/
/*Основная часть программы*/
int main(void)
{
    setlocale(LC_ALL, "Russian");
    int n = 0;  /*n - количество чисел*/
    int z;
    int mass[size];/*массив*/
    printf("Данная программа позволяет..\n");
    n = inputn();
    z = inputz();
    input_mass(&n, mass);
    number_element(&n, mass, z);
    return 0;
}
/*--------------------------------------------------------------------*/
/*Подпрограмма для ввода количества элементов массива*/
int inputn()
{
    int ver, _n;/*ver - переменная для проверки данных данных, введённых с клавиатуры, _n - количество чисел*/
    printf("Введите количество элементов n: ");
    printf("n = ");
    do
    {
        fflush(stdin);
        ver = scanf("%d", &_n);
        if ((ver != 1) || (_n < 1) || (_n>size))
        {
            printf("Введено не корректное значение, повторите ввод, n-целое число больше 0 \n");
            printf("n = ");
        }
    } while ((ver != 1)& ((getchar()) != '\n') || (_n < 1));
    return _n;
}
/*--------------------------------------------------------------------*/
/*Подпрограмма для ввода заданного числа*/
int inputz()
{
    char ver;/*ver - переменная для проверки данных данных, введённых с клавиатуры, _z - число*/
    int _z;
    printf("Введите элемент z: ");
    printf("z = ");
    do
    {
        fflush(stdin);
        ver = scanf("%if", &_z);
        if (ver != 1)
        {
            printf("Введено не корректное значение, повторите ввод\n");
            printf("число = ");
        }
    } while ((ver != 1)& ((getchar()) != '\n'));
 
    return _z;
}
/*--------------------------------------------------------------------*/
/*Подпрограмма для заполнения массива*/
void input_mass(int *_n, int *_mass)
{
    int ver, i; /*i - счетчик цикла*/
    printf("Введите элементы массива: \n");
    for (i = 0; i <*_n; i++) {
        printf("%d-й элемент = ", i);
        do
        {
            fflush(stdin);
            ver = scanf("%d", &_mass[i]);
            if (ver != 1) {
                printf("Введено не корректное значение \n");
                printf("%d-й элемент = ", i);
            }
        } while ((ver != 1)& ((getchar()) != '\n'));
    }
}
void number_element(int *_n, int *_mass, int _z)
{
    int i; /*i - счетчик цикла*/
 
    int buf;
    int d;
    buf = abs(_mass[0] - _z);
    for (i = 0; i < *_n; i++)
    {
        if (abs(_mass[i] - _z) < buf)
        {
            buf = abs(_mass[i] - _z);
            d = i;
        }
    }
    printf("Ближе всего к заданному числу будет элемент с номером ");
    printf("%d\n", d);
}


Вернуться к обсуждению:
Порядковый номер числа массива, который ближе всего к заданному числу
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2017, 21:11

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Одномерные массивы. Найти порядковый номер того элемента, который ближе всего к какому-нибудь целому
Помогите, пожалуйста, написать программу в Паскале &quot;Дано 20 вещественных чисел. Найти порядковый...

Как найти номер вещественного числа, которое ближе всего к целому числу?
Дано 20 вещественных чисел. Найти порядковый номер того из них, которое ближе всего к какому-нибудь...

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

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

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