Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
kroko
0 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 6
1

Неправильно сортируется массив по возрастанию и не находится минимальный элемент

01.07.2011, 17:27. Просмотров 476. Ответов 10
Метки нет (Все метки)

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
#include <windows.h>
 #include <iostream.h>
 #include <math.h>
 #include <time.h>
 template <class Type> void vvod(Type *a,int n);
 template <class Type> void vivod(Type *a,int n);
 template<class T> int kolich(T*a,int n);
 template <class T> void preobr (T*a,int n);
 template <class T> int min1(T*a,int n);
 main(){
 SetConsoleOutputCP(1251);
 
 int *b,m,tmp, min=0;
 srand(time(NULL));
 cout<<"Введите размерность массива:"<<endl;
 cin>>m;
 b=new int[m];
 cout<<"Целочисленный массив:\n";
 vvod(b,m);
 vivod(b,m);
 cout<<"Кол-во нулевых элементов="<<kolich(b,m)<<endl;
 cout<<"преобразованный массив:\n";
 preobr(b,m);
 vivod(b,m);
 cout<<"Минимальный элемент:"<<endl;
 min1(b,m);
 vivod(b,m);
 return 0;
 }
 template <class Type> void vvod(Type *a,int n){
 int i;
 Type x=10,y=20;
 for(i=0;i<n;i++)
 a[i]=-x+y*rand()/RAND_MAX;
 vivod(a,n);
 }
 template <class Type> void vivod(Type *a,int n){
 int i;
 for(i=0;i<n;i++)
 cout<<a[i]<<"\t";
 cout<<endl<<endl;
 }
 template <class T> int kolich(T*a,int n)
 { int i,kolvo=0;
 for(i=0;i<n;i++)
 if (a[i]==0) kolvo++;
 return kolvo;
 }
 template <class T> void preobr (T*a,int n){
 int i, tmp;
 for(i=0;i<n;i++)
 if(a[i]<a[i-1])
 a[i-1]=tmp;
 tmp=a[i];
 vivod (a,n);
 }
 
 template <class T> int min1(T*a,int n){
 int i, min=a[0];
 for(i=0;i<n;i++)
 {
 if(a[i]<min)
 min=a[i];
 }
 return min;
 vivod(a,n);
 }
 Комментарий модератора 
Используйте теги форматирования кода!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2011, 17:27
Ответы с готовыми решениями:

Дана матрица А(3,4).Упорядочить массив С(12), состоящий из элементов А, по возрастанию, найти минимальный по модулю элемент.
Помогите решить задачу: Дана матрица А(3,4).Упорядочить массив С(12),...

В каждой строке двумерного массива находится минимальный элемент, затем среди этих чисел находится максимальное. Напечатать индексы этого элемента.
Здравствуйте) Суть задания такова: В двумерном массиве X(m,n) все числа...

Неправильно выводит минимальный элемент
Дана непустая последовательность различных натуральных чисел, за которой...

Обнулить элементы строки, в которой находится минимальный элемент
Дана целочисленная квадратная матрица размера n. Найти максимальный элемент,...

Определить, находится ли минимальный элемент матрицы на главной диагонали
определить, находиться ли минимальный элемент двухмерного массива на главной...

10
co6ak
Кошковед
515 / 503 / 63
Регистрация: 12.04.2010
Сообщений: 1,392
01.07.2011, 17:31 2
даешь теги форматирования кода!

Добавлено через 2 минуты
и что за язык то >_<
полу-цпп?
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.07.2011, 17:34 3
Цитата Сообщение от co6ak Посмотреть сообщение
полу-цпп?
Видимо, борланд-цпп
По коду - криво рандом сделан.
Хотя бы так сделайте
C++
1
2
3
Type x=10,y=20;
for(i=0;i<n;i++)
a[i]=-x+rand()%y;
0
kroko
0 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 6
01.07.2011, 17:34  [ТС] 4
это с++
0
co6ak
Кошковед
515 / 503 / 63
Регистрация: 12.04.2010
Сообщений: 1,392
01.07.2011, 17:35 5
не особо похоже на ц++
хотя б setlocate добавить.
а то крокозябры >_<
0
kroko
0 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 6
01.07.2011, 17:37  [ТС] 6
почему не похожа?
0
co6ak
Кошковед
515 / 503 / 63
Регистрация: 12.04.2010
Сообщений: 1,392
01.07.2011, 17:40 7
ну для начала
main(){
это какэта?
int не поддерживается по умолчанию
циклы борландовским методом организованы.
ведь в цпп удобно писать (int i = 0; i < ...; i ++ )
лишняя строчка кода

iostream.h <- ошибкееее
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.07.2011, 17:42 8
Цитата Сообщение от kroko Посмотреть сообщение
почему не похожа?
Хотя бы потому, что любой современный компилятор выдаст тонну ерроров.
На глаз - main должен быть типа int, и cin/cout/endl находятся в пространстве std, т.е. правильно писать std::cin, std::cout, std::endl (а using namespace std у вас нету)
0
co6ak
Кошковед
515 / 503 / 63
Регистрация: 12.04.2010
Сообщений: 1,392
01.07.2011, 18:02 9
я вот понять не могу... а какое тут преобразование?

Добавлено через 4 минуты
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
#include <windows.h>
#include <iostream>
#include <math.h>
#include <ctime>
using namespace std;
template <class Type> void vvod(Type *a,int n);
template <class Type> void vivod(Type *a,int n);
template<class T> int kolich(T*a,int n);
template <class T> void preobr (T*a,int n);
template <class T> int min1(T*a,int n);
int main(){
SetConsoleOutputCP(1251);
 
int *b,m, min=0;
srand(time(0));
cout<<"Введите размерность массива:"<<endl;
cin>>m;
b=new int[m];
cout<<"Целочисленный массив:\n";
vvod(b,m);
cout<<"Кол-во нулевых элементов="<<kolich(b,m)<<endl;
cout<<"преобразованный массив:\n";
preobr(b,m);
cout<<"Минимальный элемент:"<<endl;
min1(b,m);
vivod(b,m);
system("pause");
return 0;
}
template <class Type> void vvod(Type *a,int n){
Type x=10,y=20;
for(int i=0;i<n;i++)
a[i]= rand() % y  - rand() % x;
vivod(a,n);
}
template <class Type> void vivod(Type *a,int n){
for(int i=0;i<n;i++)
cout<<a[i]<<"\t";
cout<<endl<<endl;
}
template <class T> int kolich(T*a,int n)
{ int i,kolvo=0;
for(i=0;i<n;i++)
if (a[i]==0) kolvo++;
return kolvo;
}
template <class T> void preobr (T*a,int n){
int tmp = a[0];
for ( int j = 0; j < n - 1; j ++ )
    for ( int i = j; i < n; i ++ )
        if ( a[j] > a[i] ) 
        {
            tmp = a[j];
            a[j] = a[i];
            a[i] = tmp;
        }
 
 
vivod (a,n);
}
 
template <class T> int min1(T*a,int n){
int min=a[0];
for(int i=0;i<n;i++)
if(a[i]<min)
min=a[i];
return min;
 
}
один хрен не понимаю кое-чего
0
kroko
0 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 6
01.07.2011, 18:24  [ТС] 10
а чего он минемальный элемент не находит?
0
co6ak
Кошковед
515 / 503 / 63
Регистрация: 12.04.2010
Сообщений: 1,392
02.07.2011, 04:48 11
из расчета что не я писал основной код - вопрос маляха странный.
C++
1
cout << "Minimal element = " << min1(b,m);
а не просто вызов функции. она же лишь возвращает значение минимума
0
02.07.2011, 04:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2011, 04:48

Удалить столбец матрицы, в котором находится минимальный элемент.
Удалить столбец, в котором находится минимальный элемент.

Вычисление номера строки матрицы, в которой находится минимальный элемент
задание - дан массив размера 6 x 2 с элементами вещественного типа. Написать...

В матрице определить минимальный элемент и номер строки, где он находится
В матрице размерами N*M определить минимальный элемент и номер строки, где он...


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

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

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