Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Mr_Azriel
0 / 0 / 0
Регистрация: 20.04.2015
Сообщений: 13
1

Изменить элементы массива по условию

01.07.2015, 19:48. Просмотров 333. Ответов 12
Метки нет (Все метки)

ТЗ:ввести массив A(n). Если максимальный элемент стоит на чётной позиции, то заменить все положительные нечётные элементы на 99, иначе- найти минимальный из элементов массива, которые больше 20, но меньше 30 и его номер.
Вот мой код, но он не заменяет на 99. Походу в цикле что-то не так, но не знаю, что именно. Помогите исправить.
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
 
int main()
{
#define N 1000
    int min,max,i,n,a;
    int A[N];
    srand(time(0));
    printf ("n=");
    scanf ("%d",&n);
    for (i=0;i<n;i++)
    {
        A[i]=rand()%60;
        printf ("A[%d]=%d ",i,A[i]);
    }
    max==A[0];
    min==A[0];
    for (i=0;i<n;i++)
    {
        if (i%2==0 && A[i]>max)
        {
            for (int j=0;j<n;j++)
            {
                if (A[j]>0 && A[j]%2!=0)
                {
                    A[j]==99;
                }
            }
        }
        else
        {
            for (int j=0;j<n;j++){
            if (A[j]>20 && A[j]<30 && A[j]<min)
            {
                min=A[j];
                a=j;
            }}
        }       
        printf ("\nA[%d]=%d",i,A[i]);
    }
     printf ("\nmin=%d ego nomer=%d",min,a);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2015, 19:48
Ответы с готовыми решениями:

Вывести на печать элементы массива, удовлетворяющие условию
Вывести на печать элементы массива, удовлетворяющие следующему условию M&gt;i. ...

Элементы массива должны быть упорядочены так, чтобы сначала шли элементы массива, отличающиеся от максимального на 80%.
Здравствуйте! Элементы массива ложны быть упорядочены таким способом, чтобы...

Создать два новых массива, в один из которых поместить положительные элементы массива, а в другой отрицательные и нулевые элементы
Написать программу , которая вводит с клавиатуры массив из N вещественных чисел...

Изменить код чтобы менялись местами элементы первого и последнего столбцов а не соответствующие элементы 1 и 2 столбцов
Помогите изменить код чтобы менялись местами элементы первого и последнего...

Четные элементы массива напечатать в одну строку, а индексы массива, где находятся четные элементы - в другую
Решил задачу, не могу распечатать, нужно четные элементы массива напечатать в...

12
ouchouch
1 / 1 / 1
Регистрация: 12.12.2014
Сообщений: 16
01.07.2015, 21:16 2
что означает вот эта запись?
C
1
2
3
    
max==A[0];
min==A[0];
0
Sn1p3rOk
281 / 168 / 85
Регистрация: 19.04.2014
Сообщений: 1,098
Завершенные тесты: 2
01.07.2015, 21:28 3
Для начала Вам нужно найти эти соответственно максимальный и минимальный элементы, а потом уже все будет работать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
max = A[0];
min = A[0];
int index;
 
for (i = 0; i < n; i ++)
{
    if (max < A[i])
    {
         max = A[i];
         index = i;
    }
 
    if (min > A[i])
    {
         min = A[i];
    }
}
0
ouchouch
1 / 1 / 1
Регистрация: 12.12.2014
Сообщений: 16
01.07.2015, 21:35 4
Да 23-я строка тоже какая-то бедовая по-моему.
0
Sn1p3rOk
281 / 168 / 85
Регистрация: 19.04.2014
Сообщений: 1,098
Завершенные тесты: 2
01.07.2015, 22:14 5
Подправил код твой.
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
 
#define N 1000
 
int main()
{
    int max;
    int min;
    int indexMax = 0;
    int indexMin = 0;
    int count;
    int arr[N];
 
    srand(time(NULL));
 
    printf ("count = ");
    scanf ("%d", &count);
 
    for (int i = 0; i < count; i ++)
    {
        arr[i] = rand() % 60;
        printf ("arr[%d] = %d \n", i, arr[i]);
    }
 
    max = arr[0];
 
    for(int i = 0; i < count; i ++)
    {
        if (max < arr[i])
        {
            max = arr[i];
            indexMax = i;
        }
    }
 
    if (!(indexMax % 2))
    {
        printf("Replace:\n");
 
        for(int i = 0; i < count; i ++)
        {
            if(i%2 && arr[i] > 0)
            {
                arr[i] = 99;
            }
 
            printf ("arr[%d] = %d \n", i, arr[i]);
        }
    }
    else
    {
        bool bFlag;
 
        min = max;
 
        for(int i = 0; i < count; i ++)
        {
            if(arr[i] > 20 && arr[i] < 30)
            {
                if(min > arr[i])
                {
                    min = arr[i];
                    indexMin = i;
                    bFlag = false;
                }
            }
        }
 
        bFlag ? printf("There is not range!\n") : printf ("min = %d, index = %d \n", min, indexMin);
    }
}
0
Даценд
Модератор
Эксперт .NET
4205 / 3969 / 2627
Регистрация: 20.04.2015
Сообщений: 7,207
01.07.2015, 22:14 6
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
max = A[0];
min = A[0]; //не пойдет - нужен элемент >20 и <30. Если A[0]=5, то будет ошибка
int index;
int minIndex=n;
 
for (i = 0; i < n; i ++)
{
    if (max < A[i])
    {
         max = A[i];
         index = i;
    }
}
min = max;
for (i = 0; i < n; i ++)
{
    if (min > A[i] && A[i]>20 && A[i]<30)
    {
         min = A[i];
         minIndex=i;
    }
}
 
if (index%2==0)
{
//меняем положительные нечётные элементы на 99
}
else
{
   if (minIndex==n)
   {
      printf("В массиве нет элементов >20 и <30");
      return 0;
   }
   else
   {
    //выводим min 
   }
}
0
Mr_Azriel
0 / 0 / 0
Регистрация: 20.04.2015
Сообщений: 13
01.07.2015, 22:22  [ТС] 7
приравневание максимального и минимального значения к нулевому элементу массива
0
Даценд
Модератор
Эксперт .NET
4205 / 3969 / 2627
Регистрация: 20.04.2015
Сообщений: 7,207
01.07.2015, 22:26 8

Не по теме:

Цитата Сообщение от Sn1p3rOk Посмотреть сообщение
C++
1
min = max;
Цитата Сообщение от Даценд Посмотреть сообщение
C++
1
min = max;
И время постов 22:14. Одновременно идея пришла.


Цитата Сообщение от Mr_Azriel Посмотреть сообщение
приравневание максимального и минимального значения к нулевому элементу массива
Максимального нужно, минимального необязательно.
0
Sn1p3rOk
281 / 168 / 85
Регистрация: 19.04.2014
Сообщений: 1,098
Завершенные тесты: 2
01.07.2015, 22:30 9
Цитата Сообщение от Даценд Посмотреть сообщение
И время постов 22:14. Одновременно идея пришла.
Просто одновременно отправили пост
0
Mr_Azriel
0 / 0 / 0
Регистрация: 20.04.2015
Сообщений: 13
01.07.2015, 22:53  [ТС] 10
так исходный код как будет выглядеть?
0
Даценд
Модератор
Эксперт .NET
4205 / 3969 / 2627
Регистрация: 20.04.2015
Сообщений: 7,207
01.07.2015, 22:55 11
Mr_Azriel,
у Sn1p3rOk более полный вариант. У меня нет ни ввода ни вывода.
0
Sn1p3rOk
281 / 168 / 85
Регистрация: 19.04.2014
Сообщений: 1,098
Завершенные тесты: 2
01.07.2015, 22:57 12
Цитата Сообщение от Mr_Azriel Посмотреть сообщение
так исходный код как будет выглядеть?
Ещё раз прислать или этого раза достаточно? Скопируй, вставь - все.
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
 
#define N 1000
 
int main()
{
    int max;
    int min;
    int indexMax = 0;
    int indexMin = 0;
    int count;
    int arr[N];
 
    srand(time(NULL));
 
    printf ("count = ");
    scanf ("%d", &count);
 
    for (int i = 0; i < count; i ++)
    {
        arr[i] = rand() % 60;
        printf ("arr[%d] = %d \n", i, arr[i]);
    }
 
    max = arr[0];
 
    for(int i = 0; i < count; i ++)
    {
        if (max < arr[i])
        {
            max = arr[i];
            indexMax = i;
        }
    }
 
    if (!(indexMax % 2))
    {
        printf("Replace:\n");
 
        for(int i = 0; i < count; i ++)
        {
            if(i%2 && arr[i] > 0)
            {
                arr[i] = 99;
            }
 
            printf ("arr[%d] = %d \n", i, arr[i]);
        }
    }
    else
    {
        bool bFlag;
 
        min = max;
 
        for(int i = 0; i < count; i ++)
        {
            if(arr[i] > 20 && arr[i] < 30)
            {
                if(min > arr[i])
                {
                    min = arr[i];
                    indexMin = i;
                    bFlag = false;
                }
            }
        }
 
        bFlag ? printf("There is not range!\n") : printf ("min = %d, index = %d \n", min, indexMin);
    }
}
1
Mr_Azriel
0 / 0 / 0
Регистрация: 20.04.2015
Сообщений: 13
01.07.2015, 23:18  [ТС] 13
спасибо большое
0
01.07.2015, 23:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2015, 23:18

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

Из массива выбрать числа, удовлетворяющие условию
Здравствуйте. Помогите решить пожалуйста) Из ряда чисел В(45), выбрать такие...

Получить сумму элементов массива, удовлетворяющих условию
Дан массив А(10). Получить сумму элементов массива, удовлетворяющих условию ...


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

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

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