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

сортировка выбором - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Анкета Сотрудника http://www.cyberforum.ru/cpp-beginners/thread180571.html
Задание структуры Задано множество объектов, каждый из которых описывается совокупностью признаков Р1, Р2, Р3, Р4, Р5, Р6 (таблица 1). Требуется: - выбрать объекты, признаки которых...
C++ Сформулировать одномерный массив целых чисел 1) Сформулировать одномерный массив целых чисел, используя датчик случайных чисел. 2) Распечатать полученный массив. 3) Удалить елементи, индексы которых кратные 3. 4) Добавить после каждого... http://www.cyberforum.ru/cpp-beginners/thread180570.html
Тема "Функции" С++ C++
 В таблице приведены выражения для f(x) в предположении, что решается уравнение f(x)=0. С уравнением в такой форме работает метод дихотомии. Метод простых итераций работает с формой x=g(x), т.е....
C++ Вычислить сумму рекурсивно
C++ Данa последовотельность чисел http://www.cyberforum.ru/cpp-beginners/thread180567.html
Дана последовотельность чисел b1,...bn . Получить квадратную матрицу порядка n, для которой элементарными есть числа b1,...bn в n степени , росположенные по схеме:
C++ Тема "Строки" Задан текст. Распечатать все слова, содержащие заданный символ. Нужна програмулька на C++ которая из заданного текста. Распечатает все слова, содержащие заданный символ. Заранее спасибо! :kissing: подробнее

Показать сообщение отдельно
Tiktovta
9 / 9 / 2
Регистрация: 22.11.2010
Сообщений: 29
24.05.2011, 23:17
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
 
 
int main()
{
    char string[]="274123";
    //printf("Please, input the 10 digital tring and press enter");
    //printf("->");
    //scanf("%s", &string);
    char *ptek1=&string[0];
    char pmin;
    char *ptek2;
    char temp, len;
    int i,k;
    len=strlen(string);
    printf("%d", len);
    printf("\n Nonsorted: \n");
    printf("%s",string);
    for (i=0; i<len-1; i++)
    {
        pmin = *(ptek1);
 
       //printf("Hello rld!\n");
       //printf("%c",pmin);
        for (ptek2=i+1;ptek2<len;ptek2++)
        {
           // printf("Hello world!\n");
           //printf("%c",*(string+i+1));
            if (*(ptek2)<pmin)
            {
                //printf("%c",*(string+i+1));
                pmin=*(ptek2);
            }
 
            if (pmin != *(ptek1)) // если минимальный не стоит на своем месте,...
            {
            temp=*ptek1; // ставив его на место
            *ptek1=pmin;
            pmin=temp;
            }
    printf("\n Sorted: \n");
    printf("%s",string);
        };
       // ptek1++;
    };
 
 printf("\n Sorted: \n");
 printf("%s",string);
     //printf("Hello world!\n");
    system("PAUSE");
    return 0;
}
Вот последний вариант, я что-то с указателями напутал, на 32 строке на экран выводится, а потом во время выполнения вылазит какая-то ошибка выполнения. Что не так у меня с указателями?

Добавлено через 14 часов 39 минут
Переделал нафик все... но с указателями не могу все еще разобраться.. вот пока код без указателей. Может кто подскажет. В инете ничего не про такую задачу, так что её решение по любому надо здесь выложить.
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
 
int main()
{
    char a[] = "y5h627775u4-9";
    int i=0,j, min_i;
    int len=strlen(a);
    //printf("Please, input the some any symbols and press enter");
    //printf("->");
    //scanf("%s", &a);
    while(*(a+i)!='\0')
 
       {
           printf("%c",*(a+i++) );
       };
 
    for (i = 0; i < len-1; ++i)
    {
/* устанавливаем начальное значение минимального индекса */
        min_i = i;
        /* находим минимальный индекс элемента */
        for (j = i + 1; j < len; ++j)
        {
                if (a[j] < a[min_i])
                {
                        min_i = j;
                }
        }
        /* меняем значения местами */
        int temp = a[i];
        a[i] = a[min_i];
        a[min_i] = temp;
};
 
    printf("\nsort\n");
    i=0;
    while(*(a+i)!='\0')
 
       {
           printf("%c",*(a+i++) );
       };
    return 0;
}
Добавлено через 2 часа 19 минут
Решил!!

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
//#include <stdio.h>
//#include <stdlib.h>
//#include <string.h>
#include <conio.h>
 
int main()
{
    char a[] = "Takaya vot STROKA:2011-05-21";
    char i=0,j,temp;
    char len=strlen(a);
    //printf("Please, input the some any symbols and press enter");
    //printf("->");
    //scanf("%s", &a);
    char *ptek1=&a[0];  //указатель текущего значения
    char *pmin;         //указатель минимума
    printf("Nonsorted string:\n\n");
    while(*(ptek1+i)!='\0')
       {
        printf("%c",*(ptek1+i++));
       };
    for (i = 0; i < len-1; ++i)
    {
        //устанавливаем начальное значение минимального индекса
        pmin = ptek1+i;
 
        //ниже находим минимальный индекс элемента
        for (j=i+1; j< len; ++j)
        {
            if (*(ptek1+j) < *pmin)
                {
                    pmin = (ptek1+j);
                }
        }
        // меняем значения местами методом стакана
 
        temp = *(ptek1+i);
        *(ptek1+i) = *pmin;
        *pmin = temp;
    };
    printf("\n\nSorted string:\n\n");
    i=0;
    while(*(ptek1+i)!='\0')
       {
           printf("%c",*(ptek1+i++) );
       };
    getch();
    return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru