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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2009, 17:05   #1
m9yt
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 108
По умолчанию [C] Задача с использованием строк и символов

Здравствуйте!Мне задали в универе вот такую задачу:
"Отсортировать слова в строке по алфавиту"
Думал над ней долго и не могу понять следущее:
Как из строки запомнить в переменные все слова, ведь слов всегда разное количество?
Как потом сравнить эти слова по буквам, если я их разделил, а затем переставить в нужном порядке?
Нужно учесть то, что делать это надо в стиле С,а не С++, т.е. string.h нельзя использовать.
m9yt вне форума Ответить с цитированием
Старый 17.11.2009, 17:21   #2
Secc
Пользователь
 
Аватар для Secc
 
Регистрация: 19.10.2009
Сообщений: 30
По умолчанию

неуверен .. каждая буква имеет свой код .А он в свою очередь зависит след образом a<b<c<d<e..
вообщем мне тоже интересно!
Спасибо! Кэп!!
FORZA LAZIO e NON MOLLARE MAI !!
Secc вне форума Ответить с цитированием
Старый 17.11.2009, 17:24   #3
sinj
программирователь
Пользователь
 
Аватар для sinj
 
Регистрация: 15.02.2009
Сообщений: 72
По умолчанию

Рассматривай строку как массив символов. Тебе нужно как минимум несколько контрольных переменных. Первая-значение первого символа слова. Вторая-значение первого символа предыдущего слова. Еще одна-количество букв в слове. Когда будешь сортировать, тебе надо сравнивать значения первых букв слова, т.е. если одна больше другой (в алфавите они по возрастанию--это как один из вариантов реализации) тебе нужно переставить элементы массива. Сортировку можно использовать любую. Попробуй сортировку выбором или пузырьковый алгоритм. Если не знаком с С, то строку следует задать так:
Код:
char abc[]="gfdghdjgj  hgfjhfj kljhjlkj jhg kj";
В общем случае решение будет таким. Лучше использовать указатели...
smile
sinj вне форума Ответить с цитированием
Старый 17.11.2009, 17:31   #4
m9yt
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 108
По умолчанию

В том-то и дело, что строку мы сами вводим, она не задана изначально.
Вводим через puts();
m9yt вне форума Ответить с цитированием
Старый 17.11.2009, 17:48   #5
sinj
программирователь
Пользователь
 
Аватар для sinj
 
Регистрация: 15.02.2009
Сообщений: 72
По умолчанию

На самом деле, попробуйте посмотреть по форуму. тут было много подобных задач.

)) Какого типа строка? Char, верно? Так вот ее нужно использовать как массив. Вот код:
Код:
#include <iostream.h>
int main()
{
char a;
std::cin>>a;//тут вы ввели строку
теперь можно с ней работать:
//a[0]-первый символ строки

return 0;
};
smile
sinj вне форума Ответить с цитированием
Старый 17.11.2009, 17:51   #6
Lamarq
Новичок
Джуниор
 
Регистрация: 17.11.2009
Сообщений: 4
По умолчанию

Не уверен, скорее строка имеет тип char*.
Lamarq вне форума Ответить с цитированием
Старый 17.11.2009, 17:54   #7
sinj
программирователь
Пользователь
 
Аватар для sinj
 
Регистрация: 15.02.2009
Сообщений: 72
По умолчанию

сорри, да...
Вот код.

#include <iostream.h>
int main()
{
char a;
char*b=&a;
std::cin>>a;//тут вы ввели строку
теперь можно с ней работать:
std::cout<<b[0];
return 0;
};
smile

Последний раз редактировалось sinj; 17.11.2009 в 18:01.
sinj вне форума Ответить с цитированием
Старый 17.11.2009, 18:19   #8
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от sinj Посмотреть сообщение
сорри, да...
Вот код.

#include <iostream.h>
int main()
{
char a;
char*b=&a;
std::cin>>a;//тут вы ввели строку
теперь можно с ней работать:
std::cout<<b[0];
return 0;
};
Так тоже нельзя, в памяти выделяется только 1 байт под строку, не маловато ли будет?)
Код:
#include <stdio.h>

int main()
{
    char str[80];

    gets(str);
    ...
    return 0;
}
2m9yt, string.h - часть библиотеки языка C, не C++, её точно нельзя использовать? Например там есть неплохая функция - strcmp, которая сравнивает две строки. Для разбиения строки на отдельные слова можно использовать strtok из той же string.h. А вообще такие задачи уже были - так что следует воспользоваться поиском по форуму )
netrino вне форума Ответить с цитированием
Старый 18.11.2009, 15:53   #9
m9yt
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 108
По умолчанию

Всё.Училка пояснила сегодня!
Задачу нужно сделать 2 способами:стиль С и С++
Т.е. string.h использовать можно!Но в С решаем серез char, а в С++ через string(различные методы)
m9yt вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа нахождения и проверки символов/строк MixanMM Общие вопросы Delphi 14 09.07.2009 08:44
Дан текстовый файл. Вывести количество содержащихся в нем символов и строк Настенька..Блонди Помощь студентам 4 12.02.2009 19:28
Задания по ДЕЛФИ (массивы, потом с использованием файлов и строк) ramaboss Помощь студентам 11 14.12.2008 17:29
Определение количество символов в строке, и самих строк. Патрон Общие вопросы Delphi 10 01.04.2008 12:43
Обработка строк символов Wilda Паскаль, Turbo Pascal, PascalABC.NET 3 12.12.2007 18:54