Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2009, 19:11   #11
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию

А можно ли сделать так,чтоб количество символов не так задавалось, а вводом c клавиатуры. Например:
Введите кол-во символов -> 5
->с
->т
->в
->б
->г

Отсортированный масив: б в г с т
Немного не могу сообразить как это можно реализовать.
Syltan вне форума Ответить с цитированием
Старый 26.09.2009, 19:15   #12
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Ответы на все вопросы
netrino вне форума Ответить с цитированием
Старый 26.09.2009, 19:51   #13
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию

Попробовал так, но что-то не то:
Код:
cout << "\nВведите кол-ство символов: ";
     cin >> k;  // Вводим кол-ство символов для второго массива

     char* b = new char[k];  // Выделяем под него память.
     
     for(int i = 0; i < k; i++) {  // Вводим значения
          cin >> k;
	 }

     sort(b, strlen(b));  // Сортируем
     cout << "\nОтсортированный массив: ";
     for(int i = 0; i < k; i++)  // Выводим отсортированный
     cout << b[i] << ' ';
	 delete[] b; // Освобождаем память.
Syltan вне форума Ответить с цитированием
Старый 26.09.2009, 21:33   #14
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию

Вот так программа работает на 5, но дело в том,что с английскими буквами работает, а вот с русскими нет. Вот полностью правильный код,проблемма в том,что не выводит русскими символы.
Код:
#include <iostream>
using namespace std;

template < typename T>
void sort(T *a, long N)
{
	long i = 0,  j = N;
   T temp,p;
   p = a[N/2];
   do{
   while(a[i]<p) i++;
   while(a[j]>p) j--;
   if(i<=j)
   {
	   temp = a[i]; a[i]= a[j]; a[j] = temp;
	   i++; j--;
   }
   }while(i<=j);
   if(j>0) sort(a,j);
   if(N>i) sort(a+i,N-i);
 
}


int main()
{
     int k,v; // Одну и ту же переменную можно использовать дважды и более для разных операций
	 setlocale(LC_ALL, "Russian");

    cout << "Введите кол-ство чисел: ";
    cin >> k; // Вводим кол-ство элементов

     int* a = new int [k]; // Выделяем память под массив
     
     for(int i = 0; i < k; i++) { // Заполняем массив 
     cin >> a[i];       // Введёнными с клавиатуры цифрами
         
     }

     sort(a, k-1);  // Сортируем
     cout << "\nОтсортированный массив: ";
     for(int i = 0; i < k; i++) // Выводим отсортированный массив
     cout << a[i] << ' ';

     delete[] a; // Освобождаем память.
     ///////////////////////////////////////////////////////////////////////////
	 //////////////////////////////////////////////////////////////////////////

	cout << "\nВведите кол-ство символов: ";
cin >> k; // Вводим кол-ство символов для второго массива

char* b = new char[k]; // Выделяем под него память.

for(int i = 0; i < k; i++) { // Вводим значения
cin >> b[i];
}


sort(b, k-1); // Сортируем
cout << "\nОтсортированный массив: ";
for(int i = 0; i < k; i++) // Выводим отсортированный
cout << b[i] << ' ';

delete[] b; // Освобождаем память. 
     
cin.ignore();
     cin.get();

     return 0;
}
Syltan вне форума Ответить с цитированием
Старый 26.09.2009, 21:51   #15
theos
Форумчанин
 
Аватар для theos
 
Регистрация: 10.12.2007
Сообщений: 158
По умолчанию

Код:
sort(b, strlen(b));
Когда мы вводим сиволы по одному, с чего Вы взяли, что в конце будет символ \000 ? )) А ведь именно по нему strlen определяет размер строки.

Короче по мелочи вроде ошибки убрали, проблема осталась с перекодировкой вывода в ANSI.
theos вне форума Ответить с цитированием
Старый 26.09.2009, 22:03   #16
theos
Форумчанин
 
Аватар для theos
 
Регистрация: 10.12.2007
Сообщений: 158
По умолчанию

Код:
int main()
{
     int k,v; // Одну и ту же переменную можно использовать дважды и более для разных операций
	 setlocale(LC_ALL, "Russian");

    cout << "Введите кол-ство чисел: ";
    cin >> k; // Вводим кол-ство элементов

     int* a = new int [k]; // Выделяем память под массив
     
     for(int i = 0; i < k; i++) { // Заполняем массив 
     cin >> a[i];       // Введёнными с клавиатуры цифрами
         
     }

     sort(a, k-1);  // Сортируем
     cout << "\nОтсортированный массив: ";
     for(int i = 0; i < k; i++) // Выводим отсортированный массив
     cout << a[i] << ' ';

     delete[] a; // Освобождаем память.
     ///////////////////////////////////////////////////////////////////////////
	 //////////////////////////////////////////////////////////////////////////

	 cout << "\nВведите кол-ство символов: ";
     cin >> k;  // Вводим кол-ство символов для второго массива

     char* b = new char[k];  // Выделяем под него память.

 setlocale(LC_ALL, "C");
     
     for(int i = 0; i < k; i++) {  // Вводим значения
          cin >> b[i];
	 }
 setlocale(LC_ALL, "Russian");

     sort(b, k-1);  // Сортируем
     cout << "\nОтсортированный массив: ";

 setlocale(LC_ALL, "C");

     for(int i = 0; i < k; i++)  // Выводим отсортированный
     cout << b[i] << ' ';

	 delete[] b; // Освобождаем память.   
	 
     cin.get();

     return 0;
}
theos вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка римских чисел nopster Общие вопросы C/C++ 0 18.06.2009 12:00
сортировка чисел типа float дядя Общие вопросы C/C++ 2 23.05.2009 12:11
Поразрядная сортировка беззнаковых целых чисел горе-программист Помощь студентам 0 12.04.2009 02:20
Задача на Delphi. Сортировка чисел mr-professor Помощь студентам 2 22.03.2009 18:49
Сортировка массива чисел Roberto Помощь студентам 1 02.04.2008 23:19