Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Igor567
2 / 2 / 7
Регистрация: 17.02.2013
Сообщений: 62
#1

Указатели.Найти мин. элементы.изменить знак - C (СИ)

14.04.2013, 18:37. Просмотров 457. Ответов 1
Метки нет (Все метки)

Найти минимальное значение элементов массива. Вывести на дисплей полученное значение. После этого изменить исходный массив, выполнив указанную операцию для всех его элементов: если среди всех элементов массива, расположенных левее данного, есть меньшее значение, у данного элемента следует изменить знак; в противном случае значение элемента остается неизменным. Вывести на дисплей количество измененных элементов.

РАБОТА С УКАЗАТЕЛЯМИ В ЯЗЫКЕ 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <stdio.h>
#include <locale.h>
#define MAX 20   
void min_value(int vector[], int n);
void change_sign(int vector[], int n);
int main(void)
{
    int vector[MAX];         
    int n, i, min,j,quantity;
    setlocale (LC_CTYPE, "rus");
    printf("Введите количество значений массива:");
    scanf("%i", &n);
    printf("Элементы массива [%i]:  ", n);
    for(i = 0; i<n; i++)  
    {
        scanf("%i", &vector[i]);
    }
    min_value(vector, n);
    change_sign(vector, n);
    return 0;
}
void min_value(int vector[], int n) //прототип функций..находит минимальное значение
{
    int i;
    int min = 0;
    min = vector[0];
    for(int i = 0; i < n; i++)
    {
        if (vector[i]<min)
        {
            min = vector[i];
        }
    }
        printf("min=%i\n", min);
    return ;
}
void change_sign(int vector[], int n) //прототип функций..меняет знак
{
    int i, j;
    int quantity = 0;
    for( i = 0; i < n; i++ )
        for( j = 0; j < i; j++ )
            if( vector[j] < vector[i] )
            {
                vector[j] = -vector[j];
                quantity++;
                break;
            }
            printf("Количество элементов которые изменились:%i\n", quantity);
    return ;
}
Мож кто помочь плиз...нужно программу редактировать что бы прога была с указателями...буд оч. благодарен!!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2013, 18:37
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Указатели.Найти мин. элементы.изменить знак (C (СИ)):

Найти, в какой половине массива находятся его минимальный и максимальный элементы (через указатели)
Здравствуйте. Помогите, пожалуйста, исправить ошибку. Дан массив вещественных...

Округлить и изменить знак на противоположный
Здравствуйте! Нужна помощь форумчан) Есть задача: для одномерных массивов...

Изменить код используя указатели
Мне надо изменить код используя указатели, как это сделать? Подскажите,...

Изменить код используя указатели
Что такое указатели? Мне надо изменить код используя указатели, как это...

Массив: У всех элементов массива, расположенных левее максимального, изменить знак числа на противоположный
В массиве найти наибольший элемент. Вывести на дисплей полученное значение....

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

1
anmartex
...
1709 / 1202 / 909
Регистрация: 12.02.2013
Сообщений: 1,978
14.04.2013, 19:24 #2
Лучший ответ Сообщение было отмечено Igor567 как решение

Решение

Заменил индексирование в обоих функциях.
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
#include <stdio.h>
#include <locale.h>
 
#define MAX 20
int min_value(int* begin, int* end);
int change_sign(int* begin, int* end);
 
int main(void)
{
   int vector[MAX];
   int n, i;
   setlocale(LC_CTYPE, "rus");
   printf("Введите количество значений массива: ");
   scanf("%i", &n);
   printf("Элементы массива [%i]: ", n);
   for (i = 0; i < n; i++)
   {
      scanf("%i", &vector[i]);
   }
   printf("min=%i\n", min_value(vector, vector + n));
   printf("Количество элементов которые изменились:%i\n", change_sign(vector, vector + n));
   return 0;
}
 
int min_value(int* begin, int* end)
{
   int* min = begin;
   int* elem;
   for (elem = begin; elem < end; ++elem)
   {
      if (*elem < *min)
      {
         min = elem;
      }
   }
   return *min;
}
 
int change_sign(int* begin, int* end)
{
   int quantity = 0;
 
   int* elem;
   int* left;
   for (elem = begin; elem < end; ++elem)
   {
      for (left = begin; left < elem; ++left)
      {
         if (*left < *elem)
         {
            *left *= -1;
            quantity++;
            break;
         }
      }
   }
 
   return quantity;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2013, 19:24
Привет! Вот еще темы с решениями:

Найти мах элемент массива и найти индекс мин элемента
Помогите пожалуйста решить. Ввести массив. Вывести его. Найти мах элемент и...

Указатели на элементы структуры
Пользователю нужно самому заполнить массив структур. В поле destination нужно...

Компоненты бинарного файла - вещественные числа. Изменить знак у каждого третьего числа на противоположный
Компоненты бинарного файла - вещественные числа. Изменить знак у каждого...

Определить, сколько раз элементы массива меняют знак (отдельно в строках и столбцах)
Что не так??почему выводит не то значение? #include &lt;stdio.h&gt; #include...


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

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

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