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

Написать программу для сортировки массива заданного с клавиатуры! - C++

Восстановить пароль Регистрация
 
ArxangelXA
14 / 14 / 0
Регистрация: 20.08.2012
Сообщений: 434
04.10.2013, 23:02     Написать программу для сортировки массива заданного с клавиатуры! #1
Размерность массива задаем с клавиатуры, элементы массива тоже задаем с клавиатуры.
Элементы массива это буквы английского алфавита. Отсортировать в порядке возрастания. На экран выводим элементы исходного массива и отсортированного. Сортировку можно использовать любую, желательно легкую)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2013, 23:02     Написать программу для сортировки массива заданного с клавиатуры!
Посмотрите здесь:

C++ Написать программу, которая считывает текст с клавиатуры и выводит на экран только слова состоящие из заданного количества букв
Написать программу, которая считывает с клавиатуры текст и выводит на экран толь¬ко предложения, состоящие из заданного количества слов. C++
C++ Написать программу для сортировки
C++ Написать программу, которая вычисляет сумму элементов двумерного массива по столбцам. Организовать ввод массива с клавиатуры по строкам
Написать программу для сортировки массива по возрастанию C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
04.10.2013, 23:14     Написать программу для сортировки массива заданного с клавиатуры! #2
Цитата Сообщение от ArxangelXA Посмотреть сообщение
Размерность массива задаем с клавиатуры, элементы массива тоже задаем с клавиатуры.
Элементы массива это буквы английского алфавита. Отсортировать в порядке возрастания. На экран выводим элементы исходного массива и отсортированного. Сортировку можно использовать любую, желательно легкую)
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 <iostream>
using namespace std;
template <typename T>
void insertSort(T a[], long);
int main(){
int size,i;
cout<<"Enter size:\n";
cin>>size;
char* arr=new char[size];
for (i=0;i<size;i++){
    cout<<"Enter arr"<<i<<"\n";
    cin>>arr[i];
}
cout<<"Default array:\n";
for (i=0;i<size;i++)
    cout<<arr[i]<<" ";
cout<<"\n";
insertSort(arr,size);
cout<<"Sorted array:\n";
for (i=0;i<size;i++)
    cout<<arr[i]<<" ";
cout<<"\n";
delete [] arr;
system("pause");
return 0;
}
 
template <typename T>
void insertSort(T a[], long size) {
    T x;
    long i, j;
    for(i=0;i<size;i++){  
        x=a[i];
        for (j=i-1;j>=0&&a[j]>x;j--)
            a[j+1]=a[j];  
        a[j+1] = x;
    }
}
ArxangelXA
14 / 14 / 0
Регистрация: 20.08.2012
Сообщений: 434
04.10.2013, 23:27  [ТС]     Написать программу для сортировки массива заданного с клавиатуры! #3
Цитата Сообщение от newb_programmer Посмотреть сообщение
C++
1
template <typename T>
Единственное не понял, что означает эта строка?
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
04.10.2013, 23:35     Написать программу для сортировки массива заданного с клавиатуры! #4
Цитата Сообщение от ArxangelXA Посмотреть сообщение
Единственное не понял, что означает эта строка?
создание шаблона функции, чтобы она работала с любым массивом, который вы передадите char/int/double
как бы объявляется внутренний тип данных "T"...
и функция принимает массив типа T
ArxangelXA
14 / 14 / 0
Регистрация: 20.08.2012
Сообщений: 434
04.10.2013, 23:36  [ТС]     Написать программу для сортировки массива заданного с клавиатуры! #5
newb_programmer, Большое спасибо)
ArxangelXA
14 / 14 / 0
Регистрация: 20.08.2012
Сообщений: 434
14.10.2013, 16:28  [ТС]     Написать программу для сортировки массива заданного с клавиатуры! #6
newb_programmer,
Мне как бы без разницы то что препод не принял он показал как нужно переделать, МНЕ ПРОСТО САМОМУ ХОЧЕТСЯ НАУЧИТСЯ ПИСАТЬ, А Я НИ КАК НЕ ПОНИМАЮ((
Вообщем ваша программа хорошая, но я лажанулся. Препод до меня с вопросами докапался, допустим почему нужно было писать именно так? А я объяснить не могу потому что не понимаю(понимал бы сам написал) Не могли бы вы мне объяснить?
Для чего писать так если можно все в main написать?
C++
1
2
template <typename T>
void insertSort(T a[], long);
Почему написано так хитро и что это обозначает?(то есть массиву присваивается тип данных символьный и size тоже так же только новый символьный) а почему бы ни так?(
C++
1
char arr[100]
)
C++
1
char* arr=new char[size];
и вот эта строчка в сортировке, почему поиск места начинается с (-1)?у нас ведь нет -1 индекса!
C++
1
for (j=i-1;j>=0&&a[j]>x;j--)
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"
#include <iostream>
using namespace std;
 
int main(){
    int size,i;
    cout<<"Enter size: ";
    cin>>size;
    char arr[100];
    for (i=0;i<size;i++){
       cout<<"Enter arr "<<i<<" = ";
       cin>>arr[i];
}
    cout<<"Default array: ";
    for (i=0;i<size;i++)
    cout<<arr[i]<<" ";
    cout<<"\n";
    insertSort(arr,size);
    cout<<"Sorted array: ";
    for (i=0;i<size;i++)
       cout<<arr[i]<<" ";
       cout<<"\n";
system("pause");
return 0;
 {
    int(a[i])>int(a[i+1]);
    (int) a[i]> (int) a[i+1];
    for(i=1;i<10;i++){  
        for (j=1;j10;j--)
            if((a[i]>a[i])&&(i=j));
            x=a[j];  
        x=a[i];
    }
}
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
14.10.2013, 18:42     Написать программу для сортировки массива заданного с клавиатуры! #7
ArxangelXA,
1 - да текст функции можно внести в main, но обычно такие манипуляции выносятся в функции для удобства, упрощения и унификации программы. я когда код набирал я не сочинял сортировку массива а просто вставил код готовой универсальной функции которая работает с любыми массивами.
2-у вас в условии был ввод размера массива с клавиатуры, если вы сделаете
C++
1
char arr[100]
это будет противоречить условиям, хотя можно просто работать с указаным количеством элементов, но опять таки оно не сможет превысить 100 элементов.
3-ну там дальше идет проверка j>=0 так что оно проскочит на 0-м элементе, т.к. его некуда сдвигать=)

ну и код будет так выглядеть
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
#include <iostream>
using namespace std;
 
int main(){
    int size,i,j;
    cout<<"Enter size: ";
    cin>>size;
    char arr[100];
    for (i=0;i<size;i++){
       cout<<"Enter arr "<<i<<" = ";
       cin>>arr[i];
    }
    cout<<"Default array: ";
    for (i=0;i<size;i++)
    cout<<arr[i]<<" ";
    cout<<"\n";
    //insertSort(arr,size);
    char x;
    for(i=0;i<size;i++){  
        x=arr[i];
        for (j=i-1;j>=0&&arr[j]>x;j--)
            arr[j+1]=arr[j];  
        arr[j+1] = x;
    }
    cout<<"Sorted array: ";
    for (i=0;i<size;i++)
       cout<<arr[i]<<" ";
       cout<<"\n";
    system("pause");
    return 0;
}
Добавлено через 6 минут
пс: если вы не понимаете как работает сортировка-напишите на листике последовательность, например:
4 2 7 1 9
и пошагово пройдите по коду
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2013, 20:32     Написать программу для сортировки массива заданного с клавиатуры!
Еще ссылки по теме:

C++ Написать программу для сортировки массива по убыванию суммы цифр элементов
C++ Написать программу сортировки символов, введеных с клавиатуры
C++ Написать программу для сортировки массива способами шелла вставки слияния и пузырьком

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

Или воспользуйтесь поиском по форуму:
ArxangelXA
14 / 14 / 0
Регистрация: 20.08.2012
Сообщений: 434
14.10.2013, 20:32  [ТС]     Написать программу для сортировки массива заданного с клавиатуры! #8
newb_programmer, Спасибо)
Yandex
Объявления
14.10.2013, 20:32     Написать программу для сортировки массива заданного с клавиатуры!
Ответ Создать тему
Опции темы

Текущее время: 11:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru