Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/16: Рейтинг темы: голосов - 16, средняя оценка - 5.00
 Аватар для incognito
153 / 145 / 2
Регистрация: 08.04.2010
Сообщений: 1,010

Одномерный массив. Переписать эл-ты между max&min.

27.05.2011, 22:32. Показов 3604. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Помогите справиться с заданием на Си.
Задание:
Дан одномерный массив А, состоящий из N элементов. Переписать в одномерный массив B все элементы, заключенные между максимальным и минимальным значениями.
Компилятор выдает ошибку "error C2181: illegal else without matching if" в строке 26.
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
#include "stdafx.h"
 
 
int main()
{
    int A[50], B[50];
    int max, min, i, L, T, La, Lb, k;
printf ("Enter elements of array");
for (i=0;i<50;i++)
//препод-ль сказал, что массив нужно считать через цикл,  таким образом?
{
scanf("%d",&A);
} 
max=A[0];
min=max;
k=0;
for (i=1;i<50;i++)
{
    if (max<=A[i])
        max=A[i];L=i;
    if (min>=A[i])
        min=A[i]; T=i;
}
if (L>T)
    La=L; Lb=T;
else La=T; Lb=L;
 
for (i=La; i<Lb;i++)
{
    B[k]=A[i];
    k=k+1;
}
printf ("%d", B[k]);
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.05.2011, 22:32
Ответы с готовыми решениями:

Одномерный массив, не считает произведение между MIN и MAX элементом
Кратко суть проблемы. Написал программу, которая генерирует одномерный массив из n элементов псевдослучайных чисел в заданом...

Одномерный массив. Определить разность между max и min элементами массива и их индексами
..ничего не получается... сформируйте одномерный массив из 50 целых случайных чисел в диапозоне от 0 до 100.составить блок схему к...

Есть одномерный динамический массив, нужно найти произведение между min и max элементами.
Привет срочно нужно!!!!!!!!! Есть одномерный динамический массив нужно знайти прозведение между min и max елементамы ? Delphi//

36
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
27.05.2011, 22:43
Если по-простому, не учитывая, что макс елем может стоять дальше чем мин елем:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
#define SIZE 5
 
int main(){
  int A[SIZE], B[SIZE];
  size_t i, i_mx = 0, i_mn = 0;
  for(i = 0; i < SIZE; ++i){
    printf("A[%d] = ", i);
    scanf("%d", &A[i]);
  }
  for(size_t i = 0; i < SIZE; ++i){
    if(A[i] > A[i_mx])
      i_mx = i;
    else if(A[i] < A[i_mn])
      i_mn = i;
  }
  for(i = i_mx + 1; i < i_mn; ++i){
    printf("%d ", (B[i] = A[i]));
  }
  return 0;
}
1
 Аватар для incognito
153 / 145 / 2
Регистрация: 08.04.2010
Сообщений: 1,010
27.05.2011, 23:07  [ТС]
Цитата Сообщение от asics Посмотреть сообщение
что макс елем может стоять дальше чем мин елем:
Преподаватель упоминал об этом, поэтому хотелось бы это учесть.


Можете взглянуть, правильно ли я считал массив с клавиатуры?

Добавлено через 14 минут
Цитата Сообщение от asics Посмотреть сообщение
Если по-простому, не учитывая, что макс елем может стоять дальше чем мин елем:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
#define SIZE 5
 
int main(){
  int A[SIZE], B[SIZE];
  size_t i, i_mx = 0, i_mn = 0;
  for(i = 0; i < SIZE; ++i){
    printf("A[%d] = ", i);
    scanf("%d", &A[i]);
  }
  for(size_t i = 0; i < SIZE; ++i){
    if(A[i] > A[i_mx])
      i_mx = i;
    else if(A[i] < A[i_mn])
      i_mn = i;
  }
  for(i = i_mx + 1; i < i_mn; ++i){
    printf("%d ", (B[i] = A[i]));
  }
  return 0;
}
Попробовал откомпилировать Вашу программу - "fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?"
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
27.05.2011, 23:09
Цитата Сообщение от incognito Посмотреть сообщение
Преподаватель упоминал об этом, поэтому хотелось бы это учесть
Тогда так:
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
#include <stdio.h>
 
#define SIZE 5
#define SWAP(a, b) a ^= b; b = a ^ b; a ^= b;
int main(){
  int A[SIZE], B[SIZE];
  size_t i, i_mx = 0, i_mn = 0;
  for(i = 0; i < SIZE; ++i){
    printf("A[%d] = ", i);
    scanf("%d", &A[i]);
  }
  for(size_t i = 0; i < SIZE; ++i){
    if(A[i] > A[i_mx])
      i_mx = i;
    else if(A[i] < A[i_mn])
      i_mn = i;
  }
  if(i_mx > i_mn)
    SWAP(i_mx, i_mn);
  for(i = i_mx + 1; i < i_mn; ++i){
    printf("%d ", (B[i] = A[i]));
  }
  return 0;
}
Цитата Сообщение от incognito Посмотреть сообщение
Можете взглянуть, правильно ли я считал массив с клавиатуры?
Почти,
Цитата Сообщение от incognito Посмотреть сообщение
C
1
scanf("%d",&A);
заменить на
C
1
scanf("%d",&A[i]);
Добавлено через 1 минуту
Цитата Сообщение от incognito Посмотреть сообщение
Попробовал откомпилировать Вашу программу - "fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?"
В самую первую строчку кода впишите #include "stdafx.h"
1
 Аватар для incognito
153 / 145 / 2
Регистрация: 08.04.2010
Сообщений: 1,010
27.05.2011, 23:24  [ТС]
Запустил Вашу программу. После ввода элементов окно пропадает, не выдавая никаких результатов. Может я как-то неправильно запустил. Debug->Start Debugging.

Добавлено через 1 минуту
Что будет, если вместо SIZE=5 ввести, например, SIZE=25?
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
27.05.2011, 23:29
Цитата Сообщение от incognito Посмотреть сообщение
Запустил Вашу программу. После ввода элементов окно пропадает, не выдавая никаких результатов. Может я как-то неправильно запустил. Debug->Start Debugging.
Добавтье задержку - https://www.cyberforum.ru/cpp-... 10807.html

Цитата Сообщение от incognito Посмотреть сообщение
Что будет, если вместо SIZE=5 ввести, например, SIZE=25?
Размер масива будет такой, соответсвенно вводить будете 25 елементов.

Не по теме:

Искренне ваш, КЭП

1
 Аватар для incognito
153 / 145 / 2
Регистрация: 08.04.2010
Сообщений: 1,010
27.05.2011, 23:43  [ТС]
Цитата Сообщение от asics Посмотреть сообщение
Добавтье задержку - создаю исполняемый файл запускаю окно появляется на доли секунды и изчезает
Попробовал. Не получается. Да и те варианты, по-моему, для Си?
Обычно return (0); справлялся.

Цитата Сообщение от asics Посмотреть сообщение
Искренне ваш, КЭП
Искренне благодарю за помощь.
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
27.05.2011, 23:45
incognito,
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
#include <stdio.h>
#include <conio.h>
 
#define SIZE 5
#define SWAP(a, b) a ^= b; b = a ^ b; a ^= b;
int main(){
  int A[SIZE], B[SIZE];
  size_t i, i_mx = 0, i_mn = 0;
  for(i = 0; i < SIZE; ++i){
    printf("A[%d] = ", i);
    scanf("%d", &A[i]);
  }
  for(size_t i = 0; i < SIZE; ++i){
    if(A[i] > A[i_mx])
      i_mx = i;
    else if(A[i] < A[i_mn])
      i_mn = i;
  }
  if(i_mx > i_mn)
    SWAP(i_mx, i_mn);
  for(i = i_mx + 1; i < i_mn; ++i){
    printf("%d ", (B[i] = A[i]));
  }
  getch();
  return 0;
}
так тоже окно сразу пропадает ?
0
 Аватар для incognito
153 / 145 / 2
Регистрация: 08.04.2010
Сообщений: 1,010
27.05.2011, 23:51  [ТС]
Нет. Не сразу. После ввода последнего элемента каретка переходит на след строку. После повторного нажатия окно исчезает.

Добавлено через 2 минуты
Я пользуюсь Visual C++ Express Edition. Вы тоже? Если да, то не знаете как сделать так, чтобы результаты компиляции выводились чуть ниже текста программы? А то отчет у меня отображается отдельным окном.
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
28.05.2011, 00:03
Цитата Сообщение от incognito Посмотреть сообщение
Я пользуюсь Visual C++ Express Edition. Вы тоже?
Нет, у меня codeblocks/mingw. Работа програмы:
Code
1
2
3
4
5
6
7
8
A[0] = 4
A[1] = 0
A[2] = 3
A[3] = 6
A[4] = 9
3 6
Process returned 0 (0x0)   execution time : 18.266 s
Press any key to continue.
1
 Аватар для incognito
153 / 145 / 2
Регистрация: 08.04.2010
Сообщений: 1,010
28.05.2011, 00:17  [ТС]
Вот некоторые результаты.
Миниатюры
Одномерный массив. Переписать эл-ты между max&min.   Одномерный массив. Переписать эл-ты между max&min.   Одномерный массив. Переписать эл-ты между max&min.  

0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
28.05.2011, 00:20
когда скриншот захочешь сделать, зажимай ctrl + printscr
1
 Аватар для incognito
153 / 145 / 2
Регистрация: 08.04.2010
Сообщений: 1,010
28.05.2011, 00:22  [ТС]
Цитата Сообщение от neske Посмотреть сообщение
когда скриншот захочешь сделать, зажимай ctrl + printscr
А в чем разница? Внешне не заметил.
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
28.05.2011, 00:25
incognito, Так будет немного коректней:
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
#include <stdio.h>
#include <conio.h>
 
#define SIZE 5
#define SWAP(a, b) a ^= b; b = a ^ b; a ^= b;
 
int main(){
  int A[SIZE], B[SIZE];
  size_t i, i_mx = 0, i_mn = 0;
  for(i = 0; i < SIZE; ++i){
    printf("A[%d] = ", i);
    scanf("%d", &A[i]);
  }
  for(size_t i = 0; i < SIZE; ++i){
    if(A[i] > A[i_mx])
      i_mx = i;
    else if(A[i] < A[i_mn])
      i_mn = i;
  }
  if(i_mx > i_mn){
    SWAP(i_mx, i_mn);
  }
  else
    for(i = i_mx + 1; i < i_mn; ++i)
      printf("%d ", (B[i] = A[i]));
  getch();
  return 0;
}
1
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
28.05.2011, 00:25
тьфу, alt printscreen)
1
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
28.05.2011, 00:26
Цитата Сообщение от incognito Посмотреть сообщение
А в чем разница? Внешне не заметил.
Заскриниться только активное окно.
1
 Аватар для incognito
153 / 145 / 2
Регистрация: 08.04.2010
Сообщений: 1,010
28.05.2011, 00:35  [ТС]
Цитата Сообщение от asics Посмотреть сообщение
incognito, Так будет немного коректней:
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
#include <stdio.h>
#include <conio.h>
 
#define SIZE 5
#define SWAP(a, b) a ^= b; b = a ^ b; a ^= b;
 
int main(){
  int A[SIZE], B[SIZE];
  size_t i, i_mx = 0, i_mn = 0;
  for(i = 0; i < SIZE; ++i){
    printf("A[%d] = ", i);
    scanf("%d", &A[i]);
  }
  for(size_t i = 0; i < SIZE; ++i){
    if(A[i] > A[i_mx])
      i_mx = i;
    else if(A[i] < A[i_mn])
      i_mn = i;
  }
  if(i_mx > i_mn){
    SWAP(i_mx, i_mn);
  }
  else
    for(i = i_mx + 1; i < i_mn; ++i)
      printf("%d ", (B[i] = A[i]));
  getch();
  return 0;
}
Работает просто отлично. Последняя просьба. Можно ли сделать так, что если бы макс и мин элементы стояли рядом, то выдавалось какое-нибудь соответствующее сообщение. Например, "no elements between max and min". Понимаю, что нужно будет воткнуть Printf. Только куда?

Добавлено через 1 минуту
neske, спасибо за совет. Устал вырезать окна.
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
28.05.2011, 00:48
Не славы ради но фишки для
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 <iostream>
#include <stdlib.h>
#include <time.h>
#include <iterator>
#define razmer 10
 
using namespace std;
 
int main() {
 
 srand (time(0));
 
 //int array [razmer]= {9, 7, 2, 5, 5, 2, 4, 9, 5, 3};
 
 int array [razmer];
 
 
 //Заполнение
 for (int i= 0; i< razmer; i++)
  array [i]= rand()%10;
 
 //НАходмадреса максимального и минимального элемента
 int* max= max_element(array, array+ razmer);   
 int* min= min_element(array, array+ razmer);   
 
 //сравниваем АДРЕСА
 if (min> max) { 
  swap (min, max);
 }
 
 //Объявляем новый массив с необходимым количеством элементов
 //if ((max- min)> sizeof(int)) {
 if (max- min> 1) {
  int* new_array = new int [max- min- 1];
 
  //Копируем нужные элементы из массива в массив
  copy (min+ 1, max, new_array);
  
  //Вывод результата
  copy(min+ 1, max, ostream_iterator<int>(cout, " ")); 
 
  cout<< endl;
 }
 
 //вывод исходного массива. Если минимальный и максимальный элементфы расположатся рядом, выведется только исходный массив
 copy(array, &array[razmer], ostream_iterator<int>(cout, " ")); 
 cout<< endl;
 getchar ();
 return 0;
}
1
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
28.05.2011, 00:48
Как-то так:
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
#include <stdio.h>
#include <conio.h>
 
#define SIZE 5
 
void swap(int *a, int *b){
  size_t t = *a;
  *a = *b;
  *b = t;
}
 
int MOD(int a){
  return a < 0? -a : a;
}
 
int main(){
  int A[SIZE], B[SIZE];
  int i, i_mx = 0, i_mn = 0;
  for(i = 0; i < SIZE; ++i){
    printf("A[%d] = ", i);
    scanf("%d", &A[i]);
  }
  for(i = 0; i < SIZE; ++i){
    if(A[i] > A[i_mx])
      i_mx = i;
    else if(A[i] < A[i_mn])
      i_mn = i;
  }
  if( MOD(i_mx - i_mn) == 1 ){
    printf("no elements between max and min");
    return 1;
  }
  if(i_mx > i_mn)
    swap(&i_mx, &i_mn);
  for(i = i_mx + 1; i < i_mn; ++i){
    B[i] = A[i];
    printf("%d ", B[i]);
  }
  getch();
  return 0;
}
1
 Аватар для incognito
153 / 145 / 2
Регистрация: 08.04.2010
Сообщений: 1,010
28.05.2011, 00:57  [ТС]
asics, опять стало "вылетать".(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.05.2011, 00:57
Помогаю со студенческими работами здесь

Найти max и min элементы массива y и сформировать массив z из элементов массива y, находящихся между max и min y. Записать массив z в обратном порядке
Дан массив Х{80 элементов}. Вычислить {y}_{i}=sin\sqrt{{x}_{i}}+{cos}^{2}{{x}_{1}}^{2} Найти max и min элементы массива y и...

Переписать простые числа из матрицы A в массив B, из массива удалить числа между max и min элементами
переписать простые числа из матрицы целых чисел A в массив B. Из массива B удалить числа, расположенные между максимальным и минимальными...

Элементы между min & max
В массиве найти минимальный и максимальный элемент. В промежутке между ними элементы записать в обратном порядке (включая min &amp; max)

Найти max и min, если min левее max, то среднее арифметическое между ними
#include &lt;iostream.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; void main() { int n,a; int...

Переписать в обратном порядке элементы, расположенные между min и max положительными элементами массива
Ребята помогите решить вот такую задачку. В целочисленном массиве размера N переписать в обратном порядке элементы, расположенные между min...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru