Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Фракталы https://www.cyberforum.ru/ cpp-beginners/ thread625459.html
http://www.youtube.com/watch?v=n7JLHxBm0eY&feature=relmfu Как это делают? Да и вообще возможно ли написать код для увеличения фрактала в огромное количество раз? Сколько не пробовал (с программой...
C++ Функции потока: Если строки хранят числа, то выводится сумма, иначе – конкатенация строк
Л.Р.2 Вариант №5 ------------ Разработать программу, осуществляющую ввод двух строк, введенных пользователем. Далее, если обе строки хранят целые числа со знаком, то на экран выводится сумма...
C++ Присвоение словам численных характеристик
Есть 100 различных слов. Каждому слову надо присвоить 7 целых численных характеристик в диапазоне от 0 до 4 включительно. Как наиболее оптимально организовать символьный массив и присвоить ему...
C++ Нужно вывести на экран график по массиву из заданных координат Здравствуйте! Нужно вывести на экран график по массиву из заданных координат x и y. Сделать это нужно в консольном приложении visual c++. С выводом графиков сталкиваться еще не приходилось,... https://www.cyberforum.ru/ cpp-beginners/ thread625398.html
C++ Мнимая единица https://www.cyberforum.ru/ cpp-beginners/ thread625367.html
Здравствуйте! Кто сможет подсказать? Есть пример из маткада. Как этот пример написать на С++? Меня интересует, как объявить мнимую единицу или задать, чтобы можно было вывести на экран реальные...
C++ Требуется ли при удалении объекта посредством delete указывать тип объекта?
например, есть указателиvoid *p1; void *p2; есть VCL-объект TButton, есть самописный класс TMyClass; создаются объектыp1=new TButton(NULL); p2=new TMyClass();нужно ли для корректного удаления...
C++ Найти минимальный элемент в массиве
Подскажите пожалуйста. 1.h: int* MyMin(int* p2,const int (size)) /*????*/ //int* (*MyMin) (int(*p2), int size) { //T* el = array; int min = p2; for (int i = 0; i < size; i++) {
C++ Удалить цифру из записи дано натуральное число n, Удалить из записи число цифру 0 и 5. оставив преждный порядок остальных цифр https://www.cyberforum.ru/ cpp-beginners/ thread625315.html
C++ Русские символы из ASCII https://www.cyberforum.ru/ cpp-beginners/ thread625314.html
Программа отправляет "POST" запрос в гугл Speech и сохраняет ответ. Но сохраняет в ASCII. Текстовый редактор читает это нормально, а вот уже из программы открыть этот файл и сохранить нужный текст...
C++ Определить количество элементов значение которых больше среднего арифметического всех элементов пределить количество элементов значение которых больше среднего арифметического всех элементов https://www.cyberforum.ru/ cpp-beginners/ thread625313.html
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
19.07.2012, 11:33 0

Передача функциям строк

19.07.2012, 11:33. Просмотров 513. Ответов 5
Метки (Все метки)

Ответ

Вам нужно отсортировать массив строк. т. е. сделать так, чтобы строки в нём шли в порядке возрастания. Но это же не значит, что нужно именно строки копировать. Можно сделать по-другому.

Создайте массив указателей на char, каждый инициализируйте указателем на массив char, выделенный динамически. Скопируйте строки в эти массивы, а при сортировке меняйте местами просто указатели в массиве указателей. Обмен строк в 200 символов против обмена двух указателей в 4 (или 8 на x86_64) байт, угу :-)?

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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
void sort( char ** strings, size_t count )
{
    size_t i, u;
 
    for( i = 0; i < count - 1; i++ )
    {
        size_t min = i;
 
        for( u = i + 1; u < count; u++ )
            if( 0 >= strcmp( strings[ u ], strings[ min ] ) )
                min = u;
 
        char * tmp = strings[ i ];
        strings[ i ] = strings[ min ];
        strings[ min ] = tmp;
    }
}
 
int main()
{
    #define STRING_COUNT 4
    #define STRING_LENGTH 256
 
    char * strings[ STRING_COUNT ];
    size_t i;
 
    for( i = 0; i < STRING_COUNT; i++ )
    {
        if( !(strings[ i ] = (char *) malloc( STRING_LENGTH * sizeof( char ) ) ) )
        {
            perror( "malloc" );
            return 1;
        }
 
        printf( "Ввелите строку %d/%d > ", i + 1, STRING_COUNT );
        fgets( strings[ i ], STRING_LENGTH, stdin );
        
        size_t last_char = strlen( strings[ i ] ) - 1;
 
        if( strings[ i ][ last_char ] == '\n' )
            strings[ i ][ last_char ] = 0; // обнуляем '\n'
    }
 
    for( i = 0; i < STRING_COUNT; i++ )
        printf( "%3d: %s\n", i, strings[ i ] );
 
    putchar( '\n' );
 
    sort( strings, STRING_COUNT );
 
    for( i = 0; i < STRING_COUNT; i++ )
    {
        printf( "%3d: %s\n", i, strings[ i ] ); 
        free( strings[ i ] );
    }
    
    return 0;
}
Код
[talis@localhost test_c]$ gcc main.c && ./a.out
Ввелите строку 1/4 > <html> 
Ввелите строку 2/4 > <head><title>Test</title></head> 
Ввелите строку 3/4 > <body><h1>Test</h1></body>
Ввелите строку 4/4 > </html>
  0: <html>
  1: <head><title>Test</title></head>
  2: <body><h1>Test</h1></body>
  3: </html>

  0: </html>
  1: <body><h1>Test</h1></body>
  2: <head><title>Test</title></head>
  3: <html>


Вернуться к обсуждению:
Передача функциям строк
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.07.2012, 11:33

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Передача параметров функциям. Можно ли изменить этот параметр внутри функции
Доброго времени суток, господа знатоки.В универе препод задал сделать проверку входных данных на...

Аналоги функциям обработки строк из Дельфи
Интерисуют какие есть аналоги дэльфишным copy, Ansipos или чем еще можно &quot;обрабатывать&quot; текст:) ...

Как работает вот это Класс Строк? Разбор по функциям
#pragma once #include &lt;iostream&gt; using namespace std; class String { public: String(void);...

Задачи по функциям. Объясните задачу по функциям)
Вводится последовательность из N целых чисел. Для каждого числа последовательности вывести новое...

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