Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 24.05.2014
Сообщений: 3
1

Удалить элементы массива, расположенные между его минимальным и максимальным элементами

25.05.2014, 16:48. Показов 2929. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан целочисленный массив размера N. Удалить элементы массива, расположенные между его минимальным и максимальным элементами (не включая минимальный и максимальный элементы).

у меня на экран выводятся нули. столько, сколько должно быть чисел в новом массиве. что нужно исправить, чтобы выводились нужные числа(элементы массива)?
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
/* programma*/
#include <stdio.h>
#include <stdlib.h>
main()
{
int *mas1,*mas2;
int n,k,i,j, min, max, nommin, nommax, nom;
printf("vvedi n: ");
scanf("%d",&n);
mas1=(int*)calloc(n,sizeof(int));
if (!mas1||n<=0)
 {
 printf("Pamyt' ne vydelena \n");
 system ("PAUSE");
 return 0;
 }
for(i=0;i<n;i++)
 {
 printf("vvedite chislo: ");
 scanf("%d",&mas1[i]);
 }
min=max=mas1[0];
for(i=1;i<n;i++)
 {if(mas1[i]>max)
    {
   max=mas1[i];
   nommax=i;
    }
  if(mas1[i]<min)
   {
    min=mas1[i];
    nommin=i;
   }
   }
k=n-abs(nommax-nommin)+1;
mas2=(int*)calloc(k,sizeof(int));
if (!mas2)
 {
 printf("Pamyt' ne vydelena 2\n");
 system ("PAUSE");
 return 0;
 }
 
if ((nommax-nommin)>0)
  {
    for(i=0, j=0; i<n;i++)
    {
    nom=i;
     if(nom<=nommin&&nom>=nommax)
      {while(nom<=nommin){
        mas2[j]=mas1[i];
       j++;}
      while(nom>=nommax)
       {j=k+i;
       mas2[j]=mas1[i];
       }
     }
   }
  }
if((nommax-nommin)<0)
 {
    for (i=0, j=0; i<n;i++)
    {
    nom=i;
     if(nom>=nommin&&nom<=nommax)
      {while(nom>=nommin)
      {j=k+i;
        mas2[j]=mas1[i];
      }
     while(nom<=nommax){
     mas2[j]=mas1[i];
      j++;}
      }
    }
 }
free(mas1);
for(j=0;j<k;j++)
printf("%d ",mas2[j]);
printf("\n");
 
system("PAUSE");
return 0;
}
Добавлено через 21 час 28 минут
помогите, пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.05.2014, 16:48
Ответы с готовыми решениями:

Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами
Дан массив размера N. Переставить в обратном порядке элементы массива, расположенные между его...

Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами
Дан массив размера 10. Переставить в обратном порядке элементы массива, расположенные между его...

Дан массив размера 10. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами
Дан массив размера 10. Переставить в обратном порядке элементы массива, расположенные между его...

Массив: Из массива удалить элементы, кратные трем, стоящие между максимальным и минимальным элементами.
3.Из массива удалить элементы, кратные трем, стоящие между максимальным и минимальным элементами....

1
Чорумфанин
346 / 346 / 320
Регистрация: 06.03.2014
Сообщений: 899
25.05.2014, 22:23 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
#include <stdio.h>
#include <stdlib.h>
main()
{
int *mas1,*mas2;
int n,k,i,j, min, max, nommin, nommax, nom;
printf("vvedi n: ");
scanf("%d",&n);
mas1=(int*)calloc(n,sizeof(int));
if (!mas1||n<=0)
 {
 printf("Pamyt' ne vydelena \n");
 system ("PAUSE");
 return 0;
 }
for(i=0;i<n;i++)
 {
 printf("vvedite chislo: ");
 scanf("%d",&mas1[i]);
 }
min=max=mas1[0];
for(i=1;i<n;i++)
 {if(mas1[i]>max)
    {
   max=mas1[i];
   nommax=i;
    }
  if(mas1[i]<min)
   {
    min=mas1[i];
    nommin=i;
   }
   }
k=n-abs(nommax-nommin)+1;
mas2=(int*)calloc(k,sizeof(int));
if (!mas2)
 {
 printf("Pamyt' ne vydelena 2\n");
 system ("PAUSE");
 return 0;
 }
 
if ((nommax-nommin)>0)
  {
    for(i=0, j=0; i<n;i++)
    {
        while(i<=nommin)
        {
            mas2[j]=mas1[i];
           j++;
           i++;
        }
        while(i>=nommax&&i<n)
           {
                mas2[j]=mas1[i];
                i++;
                j++;
           }
    
    }
  }
 
 
if((nommax-nommin)<0)
 {
    for (i=0, j=0; i<n;i++)
    {
    while(i<=nommax)
        {
            mas2[j]=mas1[i];
           j++;
           i++;
        }
        while(i>=nommin&&i<n)
           {
                mas2[j]=mas1[i];
                i++;
                j++;
           }
        
    }
 }
 
 
free(mas1);
for(j=0;j<k;j++)
printf("%d ",mas2[j]);
printf("\n");
 
system("PAUSE");
return 0;
}
0
25.05.2014, 22:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.05.2014, 22:23
Помогаю со студенческими работами здесь

Из массива удалить простые числа, расположенные между максимальным и минимальным числом
(СИ)Из массива X(N) удалить простые числа, расположенные между максимальным и минимальным числом.

В заданном массиве чисел заменить все элементы между минимальным и максимальным элементами массива нулями
Во всех вариантах элементы массива вводить с помощью генератора случайных чисел. Обязательно...

Сформировать массив R котррый содержит все элементы находящиеся между максимальным и минимальным элементами массива А
Дан массив А(30) со случайными целыми числами в диапозоне от 100;500. Сформировать массив R котррый...

Удалить все элементы массива расположенные между максимальным и минимальным элементами
в целочисленном массиве X(N) удалить все элементы, расположенные между максимальным и минимальным...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru