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

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

Войти
Регистрация
Восстановить пароль
 
Eugene THE BEST
9 / 9 / 0
Регистрация: 14.02.2010
Сообщений: 126
#1

Считать текст из файла и вывести на экран слова из него в алфаыитном порядке - C++

13.12.2011, 01:14. Просмотров 527. Ответов 8
Метки нет (Все метки)

Здравствуйте.
Помогите пожалуйста с решением одной задачи.
Необходимо считать текст из файла и вывести на экран слова из него в алфаыитном порядке.
Текст считать я могу, разделить на слова - тоже. Но как дальше? Записать эти слова в какой-то массив строк? А дальше - по первой и последующим буквам сравнивать и применть пузырьковую сортировку? Или можно как-то проще?

Добавлено через 4 минуты
Да, если сможете, сделайте в Си, пожалуйста. С плюсами я как-то не очень хорошо дружу пока.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2011, 01:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считать текст из файла и вывести на экран слова из него в алфаыитном порядке (C++):

Считать текст из двух файлов и вывести на экран отсортированные слова в алфавитном порядке - C++
Написать программу которая считывает текст из двух файлов и выводит на экран отсортирование слова в алфавитной последовательности на с++....

Считать текст из файла и вывести на экран его предложения в обратном порядке - C++
Не могу найти ошибку, помогите пожалуйста! #include "stdafx.h" #include "iostream"; #include "conio.h"; #include "stdio.h"; ...

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

Считать текст из файла и вывести его на экран, заменив цифры от 0 до 9 на слова - C++
Задачка в С++ Считать текст из файла и вывести его на экран, заменив цифры от 0 до 9 на слова «ноль», «один», …, «девять», начиная...

Считать из файла текст; вывести на экран все слова текста, упорядочив их по размеру - C++
Ребят, помогите с задачей пожалуйста. Нужно считать текст из файла, потом вывести все слова этого текста на экран, упорядочив их по...

Считать английский текст из файла и вывести на экран слова, начинающиеся с гласных букв - C++
программа , которая считает английский текст из файла и выводит на экран слова, начинающиеся с гласных букв!!! Помогите исправить...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
YaZephyr
4 / 4 / 0
Регистрация: 01.11.2011
Сообщений: 51
13.12.2011, 01:33 #2
я бы сравнивал не по буквам,а по кодам букв из аски
Eugene THE BEST
9 / 9 / 0
Регистрация: 14.02.2010
Сообщений: 126
13.12.2011, 01:45  [ТС] #3
Да, аски коды тоже думал сравнивать.
Тем не менее, сложности - то остаются? вначале надо как-то переводить все буквы в аски-код, потом из них составлять очередной массив. Потом его отсортировывать, потом переводить обратно и записывать? Неужели нет более легкого решения?

Добавлено через 8 минут
Вроде как-то через функции работы со строками можно. Если несложно, напишите пожалуйста.
YaZephyr
4 / 4 / 0
Регистрация: 01.11.2011
Сообщений: 51
13.12.2011, 09:34 #4
я знаю в си шарпе есть методы сортировки , тут посмотри http://msdn.microsoft.com/ru-ru/libr...zbh7b6.aspx#Y0
fasked
Эксперт С++
4935 / 2515 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
13.12.2011, 10:20 #5
Цитата Сообщение от Eugene THE BEST Посмотреть сообщение
А дальше - по первой и последующим буквам сравнивать и применть пузырьковую сортировку? Или можно как-то проще?
http://www.cplusplus.com/reference/c...cstdlib/qsort/
xAtom
914 / 739 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
13.12.2011, 12:35 #6
Цитата Сообщение от Eugene THE BEST Посмотреть сообщение
Да, если сможете, сделайте в Си, пожалуйста
Вариант при помощи односвязного списка.
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <malloc.h>
#define BUFSIZE  32
#define SEPARATORS   " \t,.;:()[]{}-=<>\"'?!+\\/\n"
 
typedef struct list {
    char  buf[BUFSIZE];
    struct list*  next;
} slist;
slist* add(slist* lst, const char* str);
slist* pop(slist* lst);
slist* sort(slist *lst);
 
 
int  main(void) {
  FILE*  fp  = NULL;
  slist* lst = NULL;
  char *ptr, str[512] = {'\0'};
 
  if((fp = fopen("D:\\doc.txt", "r")) == NULL)
       return 1;
 
  while(fgets(str, sizeof(str), fp) != NULL) {
      for(ptr = strtok(str, SEPARATORS); ptr; ptr = strtok(NULL, SEPARATORS)) 
          lst = add(lst, ptr);
  }
  fclose(fp);
 
  lst = sort(lst);
  for(; lst != NULL; lst = pop(lst))
       puts(lst->buf);
  getchar();
  return 0;
}
 
slist* add(slist* lst, const char* str) {
   slist* n = (slist*) malloc(sizeof(slist));
   if(! n)
      return lst;
   strcpy(n->buf, str);
   n->next = lst;
   return n;
}
 
slist* pop(slist* lst) {
   slist* tmp = lst;
   lst = lst->next;
   free(tmp);
   return lst;
}
 
slist* sort(slist *lst) { 
   slist* ea, *eb, *prev;
   slist* tmp = NULL;
                                              
   while(lst != NULL){ 
       ea = lst; 
       lst = lst->next;  
       eb = tmp;
       prev = NULL; 
       while(eb && tolower(ea->buf[0]) > tolower(eb->buf[0])) {
            prev = eb;
            eb = eb->next;
       }
       if(prev == NULL) {
            ea->next = tmp; 
            tmp = ea; 
       } else { 
            ea->next = eb; 
            prev->next = ea; 
       }
 };
 return tmp; 
}
Eugene THE BEST
9 / 9 / 0
Регистрация: 14.02.2010
Сообщений: 126
13.12.2011, 13:56  [ТС] #7
Спасибо вам огромное, буду читать. вроде, если ничего не перепутал, вот это подойдет
Cортировка символьного двумерного массива по алфавиту
если можно, глупый вопрос, как считать из char'a н-ное количество букв?
а то с функциями чтения совсем запутался.
YaZephyr
4 / 4 / 0
Регистрация: 01.11.2011
Сообщений: 51
13.12.2011, 17:09 #8
char buffer[] = "Привет";

sizeof(buffer)-1. // вернет 6
Eugene THE BEST
9 / 9 / 0
Регистрация: 14.02.2010
Сообщений: 126
13.12.2011, 20:42  [ТС] #9
Спасибо всем большое, сегодня объяснили как и что делать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2011, 20:42
Привет! Вот еще темы с ответами:

Считать текст из файла и вывести на экран только предложения, начинающиеся с введенного с клавиатуры слова - C++
Доброго времени суток! Помогите, пожалуйста, дописать код. Вот задание: Написать программу, которая, считывает текст из файла и выводит...

Считать текст из файла и вывести на экран все слова текста, начинающиеся с гласной буквы - C++
Напиcать программу, которая считывает текст из файла и выводит на экран все слова текста, начинающиеся с гласной буквы, меняя ее на...

Считать произвольный текст и распечатать в алфавитном порядке все слова, входящие в него - C++
Разработать программу «Алфавит», которая считывает произвольный текст и распечатывает в алфавитном порядке все слова, входящие в этот текст

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


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

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

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