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

Подскажите как написать программу массива для данного условия

09.11.2020, 17:03. Показов 593. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В массиве A(N) все положительные элементы, стоящие перед минимальным положительным элементом, переслать в «хвост» массива
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2020, 17:03
Ответы с готовыми решениями:

Как записать уравнение для данного условия?
На отрезке длинны L наугад поставлены 2 точки X и Y. Событие A: точка X ближе к точке Y чем к...

Написать программу для рисования данного орнамента, написать комментарии к каждому действию программы

Подскажите как написать программу для построения графиков
Всем доброго времени суток! Подскажите пожалуйста как написать программу которая будет строить...

Написать программу для данного случая
Здравствуйте. основная программа уже есть. Надо рассмотреть именно в этих случаях. Помогите...

13
5 / 5 / 0
Регистрация: 12.09.2020
Сообщений: 21
09.11.2020, 18:30 2
Забирай (Написана на VS 2019)
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
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define N 10
 
void autoArray(int array[], int SIZE) {
    srand(time(NULL));
    for (int i = 0; i < SIZE; i++)
        array[i] = (rand() % 29) + 1; // в массиве числа от 1 до 30
 
}
void printArray(int array[], int SIZE) {
    for (int i = 0; i < SIZE; i++)
        printf("%2d ", array[i]);
    printf("\n");
}
int main() {
 
 
    int A[N] = { 0 };
    int B[N] = { 0 }; //массив для сохранения
    int C[N] = { 0 }; //массив для обработанного(итогового) массива (тавтололология)
    int min = 10000; 
    int k; //индекс минимальной цифры
    autoArray(A, N); // заполнение массива случайными цифрами
    printf("Entered array: ");
    printArray(A, N); // вывод массива
    for (int i = 0; i < N; i++) {
        if (A[i] < min) {
            min = A[i];
            k = i;
        }
    }
    for (int i = 0; i < k; i++) 
        B[i] = A[i];  //сохранение всех элементов которые "ниже" минимума
    for (int i = 0, j = 0; i < N; i++) {
        if (i + k < 10) {
            C[i] = A[k + i];
        }
        else {
            C[i] = B[j];
            j++;
        }
        
    }
    printf("the processed array: ");
    printArray(C, N);
    return 0;
}
1
2495 / 1096 / 489
Регистрация: 17.11.2018
Сообщений: 2,788
09.11.2020, 19:37 3
Цитата Сообщение от puulower Посмотреть сообщение
Забирай
puulower, не плохо... Но интереснее это всё сделать в исходном массиве, не используя дополнительные. Попробуй...
1
5 / 5 / 0
Регистрация: 12.09.2020
Сообщений: 21
09.11.2020, 19:42 4
analogov net, я так понимаю тогда нужно использовать только динамический массив?
0
2495 / 1096 / 489
Регистрация: 17.11.2018
Сообщений: 2,788
09.11.2020, 19:47 5
puulower, нет, не нужно. Всё можно сделать в том же самом массиве. Причём, не нужно выдумывать что-то суперзаумное, по-простому...
1
5 / 5 / 0
Регистрация: 12.09.2020
Сообщений: 21
09.11.2020, 20:12 6
analogov net, Вооот
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
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define N 10
 
void autoArray(int array[], int SIZE) {
    srand(time(NULL));
    for (int i = 0; i < SIZE; i++)
        array[i] = (rand() % 29) + 1; // в массиве числа от 1 до 30
 
}
void printArray(int array[], int SIZE) {
    for (int i = 0; i < SIZE; i++)
        printf("%2d ", array[i]);
    printf("\n");
}
 
 
int main() {
    int A[N] = { 0 };
    int min = 10000; 
    int k; //индекс минимальной цифры
    autoArray(A, N); // заполнение массива случайными цифрами
    printf("Entered array: ");
    printArray(A, N); // вывод массива
    for (int i = 0; i < N; i++) {
        if (A[i] < min) {
            min = A[i]; // находим минимум
            k = i;
        }
    }
 
    int stop = -1; //чтобы элемент доходил до своего места
 
    for (int i = k; k < N; k++) {
        int j = k;
        int c = k - 1;
        while (c != stop) {  //переход минимального числа в начало и всех последующих за ним
            int tmp = A[j];
            A[j] = A[c];
            A[c] = tmp;
            c--;
            j--;
        }
        stop++;
    }
 
    printf("the processed array: ");
    printArray(A, N);
    return 0;
}
1
2495 / 1096 / 489
Регистрация: 17.11.2018
Сообщений: 2,788
09.11.2020, 20:49 7
Цитата Сообщение от puulower Посмотреть сообщение
Вооот
puulower, молоток.
Работает. Правда, не знаю, как, но работает... Осталось всё это оформить в виде функции ( если есть желание, конечно, и нахождение мин тоже в виде функции) и будет у тебя полноценная прога... Ну, немного причесать слегка и всё...
1
5 / 5 / 0
Регистрация: 12.09.2020
Сообщений: 21
09.11.2020, 21:19 8
analogov net, Забайтил, вот еще один вариант
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
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void autoArray(int array[], int SIZE) {
    srand(time(NULL));
    for (int i = 0; i < SIZE; i++)
        array[i] = (rand() % 29) + 1; // в массиве числа от 1 до 30
 
}
void printArray(int array[], int SIZE) {
    for (int i = 0; i < SIZE; i++)
        printf("%2d ", array[i]);
    printf("\n");
}
//нахождение индекса минимального числа
int index(int A[], int SIZE) {
    int k;
    int min = 10000;
    for (int i = 0; i < SIZE; i++) {
        if (A[i] < min) {
            min = A[i];
             k = i;
        }
    }
    return k;
}
void functionForThisProgram(int A[], int SIZE, int minIndex) {
    int stop = -1; //чтобы элемент доходил до своего места
    for (int i = minIndex; minIndex < SIZE; minIndex++) {
        int j = minIndex;
        int c = minIndex - 1;
        while (c != stop) {  //переход минимального числа в начало и всех последующих за ним
            int tmp = A[j];
            A[j] = A[c];
            A[c] = tmp;
            c--;
            j--;
        }
        stop++;
    }
    printf("the processed array: ");
    printArray(A, SIZE);
}
int main() {
    int N;
    printf("Enter the size of the array: ");
    scanf("%d", &N);
    int* A = (int*)calloc(N, sizeof(int));
    autoArray(A, N); // заполнение массива случайными цифрами
    printf("Entered array: ");
    printArray(A, N);
    int k = index(A, N); //индекс минимальной цифры
    functionForThisProgram(A, N, k);
    free(A);
    return 0;
}
Добавлено через 2 минуты
analogov net,
я еще, пока эту делал, понял, что нахождение минимума тут и не особо важную роль играет. Больше нужен индекс минимума.
Но когда я это понял, то функция для нахождения минимума уже была написана ахахах
1
2495 / 1096 / 489
Регистрация: 17.11.2018
Сообщений: 2,788
09.11.2020, 21:48 9
puulower, ну что могу сказать, молодец. По крайней мере, в таком виде прога работает. Хотя, конечно, ещё есть над чем работать. Остались ещё кое-какие мелкие(а может и не мелкие) погрешности, но это тоже исправимо...

Цитата Сообщение от puulower Посмотреть сообщение
понял, что нахождение минимума тут и не особо важную роль играет.
Да, это верно. Вообще, эта функция какая-то стрёмная(по-хорошему, она и работать-то правильно не должна в таком виде ), было бы неплохо её немного 'причесать'. Но, то, что ты не ленишься и пытаешься учиться, это уже хорошо. Продолжай в том же духе...
1
Заблокирован
10.11.2020, 10:13 10
puulower, как я понял из условий задачи, то в массиве есть и отрицательные числа.
Поэтому нужно найти сначала пераое положительное число, а потом на его основе искать минимальное положительное число.
0
5 / 5 / 0
Регистрация: 12.09.2020
Сообщений: 21
10.11.2020, 10:18 11
sodda, сейчас перечитал ещё раз, видимо вы правы, но чтобы это реализовать нужно пару условий добавить
0
Заблокирован
10.11.2020, 11:21 12
puulower, конечно. Нужно постоянно проверять является ли число положительным
1
2495 / 1096 / 489
Регистрация: 17.11.2018
Сообщений: 2,788
10.11.2020, 11:36 13
Цитата Сообщение от sodda Посмотреть сообщение
то в массиве есть и отрицательные числа.
sodda,
0
Заблокирован
17.11.2020, 01:20 14
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
#include<stdio.h>
 
 
int main(void) {
  
 int m[12] = {2, -20, 4, 5, -10, -9, 3, 0, 7, 8, -100, 50};
 int size  = 12;
 int min = 0; 
 int count = 0;
 int tmp = 0;
 
 
 for(int i = 0; i < size; i++) {
   printf("%d, ", m[i]);
  
 } 
 
printf("\n");
 
 
 for(int i = 0; i < size; i++) {
    if(m[i] >=0) {
     min = m[i];
     break;
    }
   }
 
 
 
 
 for(int i = 0; i < size; i++) {
   if(m[i] >= 0) {
     if(m[i] < min) {
        min = i;
     }     
   } 
 }   
 
  for(int i = 0; i < size; i++) {
    if(i < min && m[i] >= 0) {     
     count++;
     for(int k = i; k < size - count; k++) {
         tmp = m[k];
        m[k] = m[k + 1];
        m[k + 1] = tmp;
      } 
      i -= 1;
      min = min -(i + 1);
    }
      
 }
   
 
 
 for(int i = 0; i < size; i++) {
   printf("%d, ", m[i]);
  
 } 
 
 return 0;
 
}
0
17.11.2020, 01:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.11.2020, 01:20
Помогаю со студенческими работами здесь

Подскажите пожалуйста как написать запрос в котором есть 2 условия, одно - and, другое -or
Имеется таблица, которая содержит сведения о докторе и дате приема. Мне нужно отсортировать записи...

Нужно написать программу для данного цикла
S = 1+ cosX/1!+cos2X/2!+cos3X/3!+⋯+cosnX/n! E = 10^-4 Точное значение: T=e^cosX*cos(sinx)

Написать программу для создания данного рисунка
написать программу для создания данного рисунка

Написать программу для вычеркивания из данного слова букв
Написать программу для вычеркивания из данного слова все букв &quot;К&quot; и &quot;G&quot;(с применением строковой...

Написать программу, которая существляет поворот данного массива вокруг горизонтальной оси симметрии
Дан двумерный массив размерностью 8х12, инициализированный целочисленными значениями из диапазона...

Как написать программу под эти условия
Суть в чём: есть список товара (багет 150 видов) с указанной ценой и шириной за метр, все цены...


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

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