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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
KorolevaE
2 / 2 / 0
Регистрация: 24.11.2012
Сообщений: 34
#1

Преобразовать массив, умножив положительные элементы на минимальный (с использованием сортировки) - C++

10.06.2013, 16:40. Просмотров 392. Ответов 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
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100
using namespace std;
 
void gen (int a, int b, int n, int mass[N]); 
void out (int n, int mass[N]);
void umn (int n, int mass[N]);
void sort (int n, int mass[N]);
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL, "RUS");
    int a, b, n, mass[N];
    
    printf ("\nВведите количество элементов массива (n<100): ");
    scanf ("%d", &n);
 
    printf ("\nВведите начало массива: ");
    scanf ("%d", &a);
 
    printf ("\nВведите конец массива: ");
    scanf ("%d", &b); 
 
    while (n>100) {
    printf ("\nВы ввели слишком большое число. Попробуйте еще раз.\n");
    printf ("\nВведите количество элементов (n<100): ");
    scanf ("%d", &n);
    }
    gen (a, b+1, n, mass);
    out (n, mass);
    printf ("\n\nМассив после сотрировки: \n");
    sort (n, mass);
    umn (n, mass);
    printf ("\n\n");
    system ("pause");
    return 0;
}
 
void gen (int a, int b, int n, int mass[N]){
    srand (time (NULL)*1000);
    for (int i=0; i<n; i++) {
    mass[i]=rand()*1.0/(RAND_MAX)*(b-a)+a;
}
}
 
void out (int n, int mass[N]) {
    printf ("\nИсходный массив:\n", n);
    for (int i=0; i<n; i++) {
    printf ("%d\t", mass[i]);
}
}
 
void sort (int n, int mass[N]) {
    int i, j, min, t;
    for (i=0; i<n-1; i++) {
        min=i;
        for (j=i+1; j<n; j++) {
            if (mass[j]<mass[min])
                min=j;
        }
        t=mass[i];
        mass[i]=mass[min];
        mass[min]=t;
    }
    for (i=0; i<n; i++) {
        printf ("%d\t", mass[i]);
    }
}
void umn (int n, int mass[N]) {
    int i, j, min;
    for (i=0; i<n; i++) {
        if (min>mass[N])
            min=mass[N];
            
        for (i=0; i<n; i++) {
            if (mass[N]>0)
                mass[N]=mass[N]*min;
                printf("преобразованный массив:\n", mass[N]);
    }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2013, 16:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразовать массив, умножив положительные элементы на минимальный (с использованием сортировки) (C++):

Дан массив размера n. Преобразовать его, умножив все положительные элементы на минимальный элемент - C++
Помогите пожалуйста, очень надо.

Преобразовать массив, заменив все положительные элементы единицами... - C++
Задан одномерный массив А(10). Преобразуйте этот массив, заменив все положительные элементы единицами, а все отрицательные элементы нулями....

Преобразовать массив, сначала записать положительные, а затем отрицательные элементы - C++
Задание: написать функцию, которая в массиве создает преобразование – сначала записывает положительные, а затем отрицательные элементы, не...

Преобразовать массив так, чтобы сначала располагались все положительные элементы, а потом отрицательные - C++
Помогите пжлст решить задачу:cry: В одномерном массиве, состоящем из n целых эл-ов, вычислить: 1) произведение элементов массива с...

Преобразовать массив, расположив сначала все положительные элементы, а потом - все отрицательные - C++
Преобразовать массив таким образом, чтобы сначала располагаись все положительные элементы, а потом-все отрицательные (элементы, равные 0,...

Преобразовать массив, чтобы сначала располагались все положительные элементы, а потом – все отрицательные - C++
Здравствуйте. Помогите, пожалуйста, разобраться с указанным заданием. Первые два пункта, вроде, получились, а вот последний (сортировка)...

2
Doctor_
234 / 234 / 71
Регистрация: 03.02.2011
Сообщений: 1,431
10.06.2013, 17:33 #2
printf("преобразованный массив:\n", mass[N]);
тут просто текст выводится, надо было что-то типа %4d вписать

и это кстати, если не ошибаюсь С, а не С++
C
1
printf("преобразованный массив: %4d\n", mass[N]);
Добавлено через 23 минуты
Не много исправил код, не понял зачем нужны числа а и b (проверки на ввод у вас не было, если вдруг b больше размера массива и т.д. если вы хотите а и b без проверки то берите сразу по умолчания а=1 и b=N) из функции umn убрал вывод, так как у вас уже была функция out которая выводит массив на экран, поэтому можно ее использовать.
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
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
 
using namespace std;
 
void gen(int vec[], int size);
void out(int vec[], int size);
void umn(int vec[], int size);
void sort(int vec[], int size);
 
int main() {
    srand(time(NULL));
    int N, *vec;
    do {
        printf("Input array size less than 100: ");
        scanf("%d",&N);
    } while(N > 100);
    vec = new int[N];
    gen(vec, N);
    out(vec,N);
    sort(vec,N);
    out(vec,N);
    umn(vec,N);
    out(vec,N);
    getche();
}
 
void gen(int vec[], int size) {
     for(int i=0; i<size; i++) {
             vec[i] = 5 - rand()%10;
     }
}
 
void out(int vec[], int size) {
     printf("\nOutput array:\n");
     for(int i=0; i<size; i++) {
             printf("%3d",vec[i]);
     }
}
 
void sort(int vec[], int size) {
     int min = 0;
     for(int i=0; i<size-1; i++) {
             for(int j=0; j<size-1; j++) {
                     if(vec[j+1] < vec[j]) {
                                 min = vec[j+1];
                                 vec[j+1] = vec[j];
                                 vec[j] = min;                                 
                     }
             }
     }
}
 
void umn(int vec[], int size) {
     //tak kak sort sdelan, samyj pervyj element massiva eto minimalnyj element vec[0]
     for(int i=0; i<size; i++) {
             if(vec[i] > 0) 
             vec[i] *= vec[0];
     }
}
0
KorolevaE
2 / 2 / 0
Регистрация: 24.11.2012
Сообщений: 34
11.06.2013, 17:57  [ТС] #3
спасибо большое)

Добавлено через 23 минуты
a и b - это границы массива, он должен задаваться рандомно с клавиатуры.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2013, 17:57
Привет! Вот еще темы с ответами:

Преобразовать массив, чтобы сначала располагались все положительные элементы, а потом все отрицательные - C++
Добрый день, в поиске ничего подходящего не нашлось. Нет времени уже самому подробно вникать, нужна помощь :( Задание: ...

Преобразовать массив, чтобы сначала располагались все положительные элементы, а потом все отрицательные - C++
Помогите исправить ошибку, пожалуйста. Тут 3 задания в одном, ошибка в третьем. Задача 3: Из общего задания: &quot;Примечание 1: если в задании...

Преобразовать массив, чтобы сначала располагались все положительные элементы, а потом — все отрицательные - C++
Здравствуйте, мне срочно нужна помощь:В одномерном массиве, состоящем из n целых элементов, вычислить: 1) произведение элементов массива...

Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом все отрицательные - C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1.Произведение элементов массива с четными номерами; 2.Сумму...


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

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

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