Форум программистов, компьютерный форум, киберфорум
Наши страницы

C для начинающих

Войти
Регистрация
Восстановить пароль
 
RebelUA
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 18
#1

Задача на перестановку в одномерном масиве - C (СИ)

14.04.2013, 14:22. Просмотров 362. Ответов 3
Метки нет (Все метки)

Такое вот интересное задание:
Во всех последовательностях положительных чисел изменить порядок элементов на противоположный
Примерный текст программы есть. Где находится начало последовательности, и последний элемент. Нужно только немного дополнить, может что-то исправить. Заранее благодарен!

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
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
 int Ar[100];   /* массив, который обрабатывается */
 
int main(void) {
 int i, j;    /* индексы в массиве */
 int av;      /* среднее значение */
 int nn; /* последний эл. в последовательности */ 
 int k;      /* индекс начала последовательности */
 int r; /* рабочая переменная */
  
  /* vvod */
  randomize();
  for (i=0; i<100; Ar[i++]=random(101)-50 );
  printf("Nachialnyi masiv:\n");
  for (i=0; i<100; printf("%3d  ",Ar[i++]));
  putchar('\n');
  putchar('\n');
 
  /* obr */
  for (i=0; i<99; i++) {
  if (Ar[i]>=0 && Ar[i++]>=0) {
  for (j=i; Ar[j]<0; j++) {nn++;}
  for (k=i; (k<(nn mod 2)); k++) {
  /* Вот в этом цикле нужно уместить перестановку */  
  }
  }
  }
 
  /* vyvod */
  printf("Obrabotannyi masiv:\n");
  for (i=0; i<100; printf("%3d  ",Ar[i++]));
  putchar('\n');
  getch();
  return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2013, 14:22
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Задача на перестановку в одномерном масиве (C (СИ)):

Заполнить закон в масиве - C (СИ)
#include &lt;stdio.h&gt; #define N 4 int main() { int i,j,arr; for(i=0;i&lt;N;i++) for(j=0;j&lt;N;j++) arr=закон ...

Найти одинаковые фамилии в масиве структур - C (СИ)
Есть такая структура struct sch{ char surname; char name; int form; } stud, stud1; нужно найти одинаковые фамилии(surname) ...

Найти непрерывную цепочку положительных элементов в масиве - C (СИ)
Помогите написать код. Дан массив X из N целых чисел. Нужно найти самую длинную непрерывную цепочку положительных элементов больше...

В масиве найти максимальный элемент и его номер - C (СИ)
В масиве найти максимальный элемент и его номер. Вот мой нерабочий вариант: #include &lt;cstdlib&gt; #include &lt;iostream&gt; int zavd1(int...

умножение на промежутке в одномерном масиве - Turbo Pascal
В одномерном массиве В состоящим N целых элементов, вычислить: a) кол-во элементов,равных по значению первому; b) произведение на...

Сделать выборку в одномерном масиве - C++
есть массив 1,2,3,4,1,2,3,4,1,2,3,4 выбрать последованость 1,2,3,4 да так чтобы по разным частям массива Например: ...

3
bgm123
40 / 40 / 16
Регистрация: 29.01.2013
Сообщений: 277
14.04.2013, 14:24 #2
А что такое randomize() и random() ?
0
RebelUA
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 18
14.04.2013, 14:25  [ТС] #3
Заполнение массива случайными числами
0
bgm123
40 / 40 / 16
Регистрация: 29.01.2013
Сообщений: 277
14.04.2013, 14:42 #4
В C нет функции randomize, есть rand. Вот код:

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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define SIZE 20
#define MAX_VALUE 100
 
//инициализация массива
void initArray(int *list, int size);
 
//развернуть последовательность 
void revSeq(int *list, int start, int end);
 
//развернуть все последовательности неотрицательных чисел в списке list
void revAllSeq(int *list, int size);
 
//печать массива
void printArray(int *list, int size);
 
int main(void)
{
    int list[SIZE];  //массив, который обрабатывается
    
    srand(time(NULL));
 
    puts("input array:");
    initArray(list, SIZE);
    printArray(list, SIZE);
    
    revAllSeq(list, SIZE);
    puts("\n\noutput array:");
    printArray(list, SIZE);
 
    return 0;
}
 
void initArray(int *list, int size)
{
    int i, sgn;
 
    for(i = 0; i < size; i++){
        sgn = rand() % 2;
        list[i] = rand() % MAX_VALUE;
        if(sgn) list[i] *= (-1);
    }
}
 
void revSeq(int *list, int start, int end)
{
    int temp;
 
    while(start < end){
        temp = list[start];
        list[start] = list[end];
        list[end] = temp;
        start++; end--;
    }
}
 
void revAllSeq(int *list, int size)
{
    int start, end, i, j;
 
    for(i = 0; i < size; i++)
    {
        if(list[i] < 0)
            continue;
        
        start = i;
        for(j = start; j < size; j++)
            if(list[j] < 0)
                break;
        end = j - 1;
        revSeq(list, start, end);
        i += end - start;
    }
}
 
void printArray(int *list, int size)
{
    int i;
 
    for(i = 0; i < size; i++)
        printf("%4i ", list[i]);
 
    putchar('\n');
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2013, 14:42
Привет! Вот еще темы с ответами:

поиск элемента в одномерном масиве - C++
как осушествить поиск элемента в массиве дешевле задоной суммы(последнего наиденого) спасибо!!

Найти количество цифры X в одномерном масиве - C#
Нужно написать программу, которая находит количество цыфр X в одномерном масиве...

одномерном масиве состоящем из N вещественных элементов вычислить: - Pascal
1) минимальный элемент массива. 2) сумму элементов массива, расположенных между первым и последним положительным элементом. Преобразовать...

Найти суму положительных элементов в одномерном масиве - Turbo Pascal
найти суму положительных элементов в одномерном масиве А. Перенести из масива А в масив В четные элементы, а в масив С нечетные, и...


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

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

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