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

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

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

строки - C++

10.05.2011, 19:42. Просмотров 453. Ответов 8
Метки нет (Все метки)

Составить программу на языке С++ которая преобразовывает строку так, чтобы все цифры в ней были отсортированы по убыванию.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2011, 19:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос строки (C++):

Сгенерировать две произвольные строки и определить, является ли какое-либо слово первой строки частью второй строки - C++
Сгенерировать две произвольные строки и определить, является ли какое-либо слово первой строки частью второй строки. 1. Я дуб дубом,даже...

Добавить строки, начиная со строки К1 и до строки К2, в динамический массив строк - C++
Есть динамический массив строк. Заполняется, т.е. размер его уже известен будет. Но дальше нужно сделать задание: "Добавить строки, начиная...

Удалить строки динамической матрицы, начиная со строки К1 и до строки К2 - C++
Сформировать динамический двумерный массив, заполнить его случайными числами и удалить строки, начиная со строки К1 и до строки К2 вот...

Ввести две символьных строки. Выполнить поиск второй строки в первой и вывести номер позиции первой строки, с которой вторая строка содер-жится в ней - C++
Ввести две символьных строки. Выполнить поиск второй строки в первой и вывести номер позиции первой строки, с которой вторая строка...

Функция перезаписывает символы строки заданным количеством символов другой строки - C++
Программа работает. Но не совсем правильно. В конечной строке появляются непонятные символы, которых быть там не должно. В программе нельзя...

Как первые два символа строки переставить в конец этой строки? - C++
Собственно вопрос

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
10.05.2011, 20:21 #2
строка символов или строка из чисел(числовой массив)? Если второе, то это просто, если первое, надо подумать..
0
olleg90
34 / 34 / 6
Регистрация: 06.01.2011
Сообщений: 90
10.05.2011, 20:37 #3
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
#include <iostream>
using namespace std;
void main()
{ char line[80];
cout<<"INPUT STRING"<<endl;
gets(line);
int fl=1,tmp=-1;
char c;
while (fl!=0)
{fl=0;
for(int i=0;i<strlen(line);i++)
{
if (isdigit(line[i])&&tmp>-1&&line[tmp]>line[i])
{c=line[tmp];
line[tmp]=line[i];
line[i]=c;
fl=1;
}
if (isdigit (line[i])) tmp=i;
}
}
cout<<line<<endl;
system("pause");
}
может не работать ибо не на чем проверить
0
Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
10.05.2011, 20:41 #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
#include <stdio.h> 
#include <stdlib.h> 
#include <conio.h> 
main() 
{ 
  int m,k,i,n=10; 
  int xmin,x[]={5,1,3,2,4,0,6,9,8,7};
  clrscr(); 
 
  printf("\nElements of unsorted array:");
  for (k=0; k<n; k++) 
  printf(" %i",x[k]); 
 
  for (k=0; k<n-1; k++) 
  { xmin=x[k];m=k; 
    for (i=k+1; i<n; i++) 
      if (x[i] > xmin)
     {xmin=x[i]; m = i;} 
    x[m]=x[k]; x[k]=xmin; 
  } 
 printf("\nElements of sorted array:  ");
  for (k=0; k<10; k++) 
    printf(" %i",x[k]); 
getch(); 
}
0
igorrr37
1647 / 1275 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
10.05.2011, 20:41 #5
C++
1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
#include<functional>
#include<string>
#include<algorithm>
 
int main (){
    std::string s="51423";
    std::sort(s.begin(), s.end(), std::greater<char>());
    std::cout<<s<<"\n";
    return 0;
}
1
ЛеЖиК)
157 / 60 / 1
Регистрация: 29.04.2011
Сообщений: 631
11.05.2011, 11:23 #6
Цитата Сообщение от igorrr37 Посмотреть сообщение
std::greater<char>()
а что это делаеет?
0
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
11.05.2011, 12:42 #7
а что это делаеет?
Это функтор. В двух словах, std::greater это класс у кторого перегружен operator() благодоря чему его объект может "притворяться" функцией.
Одна из перегрузок функции std::sort выглядит так
C++
1
2
template <class RandomAccessIterator, class Compare>
void sort ( RandomAccessIterator first, RandomAccessIterator last, Compare comp );
Третий параметр comp является шаблонным параметром. Передать туда ты можешь что угодно, главное чтобы это "что угодно" можно было вызвать как функцию comp(элемент1, элемент2) внутри функции std::sort.
В данном случае в качестве третьего параметра передаётся объект класса std::greater(std::greater<char>() это вызов конструктора) перегруженный operator() которого будет производить сравнение элементов при сортировке. Преимущество функторов перед указателями на функциии заключается в том, что компилятор может легко оптимизировать код сделав operator() встроенным(inline).
1
ЛеЖиК)
157 / 60 / 1
Регистрация: 29.04.2011
Сообщений: 631
11.05.2011, 12:46 #8
если я правельно понял, то
C++
1
greater<char>()
работает так же как

C++
1
2
3
4
int comp(const void *i, const void *j) // сортируем
{
  return *(int *)i - *(int *)j;
}
0
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
11.05.2011, 13:02 #9
Да. std::greater выполняет роль функции сравнения элементов, но благодоря встраиванию функция std::sort с переданным ей функтором
C++
1
std::sort(array, array+SIZE, std::greater<int>())
должна отработать на порядок быстрее, чем та же qsort с переданным ей указателем на функцию
C
1
qsort(array, SIZE, sizeof(int), comp);
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2011, 13:02
Привет! Вот еще темы с ответами:

Указать номер строки, максимально удаленной от первой строки заданной матрицы - C++
Задание: Расстояние между k-й и 1-й строками квадратной матрицы А опеределяется как r = сумма от j=1 до N от (abs(akj)*abs(a1j)). Указать...

Найти среднее арифметическое каждой строки матрицы и отсортировать строки по возрастанию - C++
Дана квадратная матрица. Найти среднее арифметическое каждой строки и отсортировать строки по возрастанию этих характеристик

Упорядочить символы строки B в алфавитном порядке и удалить латинские буквы из строки A - C++
&quot;Даны строки A и B. Если в A есть латинские буквы, а в B нет повторяющихся символов, то упорядочить символы B в алфавитном порядке и...

Чтение через fscanf_s части строки с пробелом (и запись этой же строки) - C++
нужно записать в файл строку, содержащую через табуляцию int, char, char, char, float, int. Далее необходимо из такой же строки вывести...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.05.2011, 13:02
Ответ Создать тему
Опции темы

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