2 / 2 / 4
Регистрация: 12.04.2013
Сообщений: 66
1

Вывести в другой файл в алфавитном порядке все слова, встречающиеся в тексте

12.04.2013, 18:11. Показов 3864. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан файл, содержащий текст. Вывести в другой файл в алфавитном порядке все слова, встречающиеся в этом тексте. Язык Си.
Сначала я из своего файла f закидываю в str1 свою строку (там три слова). Затем в цикле от 'A' до 'z' с помощью функции strtok ищу свои слова и проверяю первую букву. Если она совпадает по коду аски я её вывожу на экран. По идее мне нужно их закидывать в другой файл g. Но у меня возникает проблема сразу на 2ой букве по коду аски. Перемещая указатель с помощью k=strtok(NULL," "); он(указатель) оказывается в конце строки. Но потом по идее я перемещаю указатель за 1ое слов с помощью k=strtok(str1," "); Но на деле выходит что указатель не перемещается за 1ое слово. И функция k=strtok(NULL," "); возвращет мне NULL.
Где я допустил ошибку? Почему указатель не перемещается за 1ое слово?

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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
int main()
{   
    FILE *f=fopen("text1lab8.part1.task5.txt", "rt+"),*g=fopen("text2lab8.part1.task5.txt","wt");
    char str1[100],j;
    size_t res1;
    res1=fread(str1, sizeof(char),100,f);
    printf("The number of elements=%d\n",res1);
    int i,h=0;
    printf("%s\n",str1);
    for (i=0;i<strlen(str1);i++) {
        if (str1[i]==char(32)) h++;
        }
    printf("h=%d\n",h);
    char *k;
    for (j=char(65);j<=char(122);j++) {
        printf("! j=%c !\n",j);
        for (i=0;i<h;i++) {
            k=strtok(str1," ");
            printf("!! %s !!\n",k);
            if (k[0]==j) { printf("&&& %s &&&\n",k); }
            for (i=0;i<h;i++) {
                k=strtok(NULL," ");
                printf("!!! %s !!!\n",k);
                if (k[0]==j) { printf("&&&& %s &&&&\n",k); }
            }
        }
    }
    
    
    fclose(f);
    fclose(g);
    getch();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.04.2013, 18:11
Ответы с готовыми решениями:

Перечислить в алфавитном порядке все слова, встречающиеся в этом тексте.
Дан файл, содержащий текст на русском языке. Перечислить в алфавитном порядке все слова,...

Вывести все гласные буквы встречающиеся в тексте в алфавитном порядке
дан текст за которым следует точка. вывести все гласные буквы встречающиеся в тексте в алфавитном...

Множества. Вывести на экран в алфавитном порядке все буквы, встречающиеся в тексте
1.Задан текст, состоящий из латинских букв, в конце идет точка. Вывести на экран все буквы в...

Вывести на экран все буквы в алфавитном порядке, встречающиеся в тексте не менее двух раз
2.Задан текст, состоящий из латинских букв, в конце идет точка. Вывести на экран все буквы в...

1
2 / 2 / 4
Регистрация: 12.04.2013
Сообщений: 66
17.04.2013, 21:07  [ТС] 2
Вот решение этой задачи.

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
//Дан файл, содержащий текст. Вывести в другой файл в алфавитном порядке все слова, встречающиеся в этом тексте.
typedef struct fort {
char word[50];} fort;

fort sort (fort* array, int n){
int k,i;
fort buff;
for (i=0;i<n;i++){
for(k=0;k<n;k++){
if(strcmp(array[i].word,array[k].word)<0){
buff=array[i];
array[i]=array[k];
array[k]=buff;
}
}
}
}


int main()
{
FILE *f=fopen("text1lab8.part1.task5.txt", "rt+"),*g=fopen("text2lab8.part1.task5.txt","wt");
char str1[200],str2[200]="";
size_t res1;
res1=fread(str1, sizeof(char),200,f);
printf("The number of elements=%d\n",res1);
int i,h=0;
printf("%s\n",str1);
for (i=0;i<strlen(str1);i++) {
if (str1[i]==char(32)) h++;
}
char *k;
fort mas[h+1];
k=strtok(str1," ");
strcpy(mas[0].word,k);
for (i=1;i<=h;i++) {
k=strtok(NULL," ");
strcpy(mas[i].word,k);
}
sort(mas,h+1);
for (i=0;i<h+1;i++) printf("%s\n",mas[i].word);
for (i=0;i<h+1;i++) {
strcat(str2,mas[i].word);
strcat(str2," ");
}
printf("str2: %s",str2);
size_t res2;
res2=fwrite(str2,sizeof(char),strlen(str2),g);
fclose(f);
fclose(g);
getch();
return 0;
}
0
17.04.2013, 21:07
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.04.2013, 21:07
Помогаю со студенческими работами здесь

Записать в другой файл в столбик все слова, встречающиеся в тексте
Задача (алфавитно-частотный словарь). В файле записан текст. Нужно записать в другой файл...

Переписать в алфавитном порядке все слова из заданного файла, имеющие длину n, в другой файл.
Разобрать программу &quot;Сортировка по алфавиту&quot;.Дан текстовый файл. Переписать в алфавитном порядке...

Вывести в алфавитном порядке все встречающиеся русские буквы.
Дан текст.Вывести в алфавитном порядке все встречающиеся в нем русские буквы. Задача дана для...

Вывести на экран все буквы, встречающиеся в строке, в алфавитном порядке
Программа выводит на экран все буквы, встречающиеся в строке в алфавитном по-рядке.

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

Вывести в алфавитном порядке все латинские буквы, встречающиеся в строке (Pascal -> C++)
Переведите из паскаля в с++, пожалуйста! Задание:Задана строка символов. Вывести в алфавитном...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Как преобразовать список списков в простой список в Python
bytestream 22.01.2025
При работе с Python разработчики часто сталкиваются с необходимостью обработки сложных структур данных, среди которых особое место занимают вложенные списки. Эти структуры представляют собой списки,. . .
Что такое GUID / UUID и как их создать
bytestream 22.01.2025
В мире разработки программного обеспечения существует постоянная потребность в уникальной идентификации объектов, записей и ресурсов. Эта задача становится особенно актуальной в распределенных. . .
Как добавить пустую директорию в репозиторий Git
bytestream 22.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с ситуацией, когда необходимо сохранить пустую директорию в репозитории. Данная задача может показаться простой на первый. . .
Как валидировать адрес email в JavaScript
bytestream 22.01.2025
JavaScript, как основной язык веб-разработки, предоставляет разработчикам множество инструментов для реализации эффективной валидации email-адресов. От простых встроенных решений до сложных. . .
Как заменить все вхождения подстроки в JavaScript
bytestream 22.01.2025
Строки в JavaScript представляют собой неизменяемые последовательности символов, что делает их обработку особенно интересной с точки зрения оптимизации и выбора правильного подхода к решению задач. . . .
Управление версиями пакетов в Node.js. В чем разница между тильдой (~) и кареткой (^) в package.json
bytestream 22.01.2025
В современной разработке программного обеспечения управление версиями пакетов играет ключевую роль в обеспечении стабильности и надежности проектов. Node. js, как одна из самых популярных платформ для. . .
Аутентификация на сайте с помощью формы
bytestream 21.01.2025
В современном цифровом мире безопасная аутентификация становится краеугольным камнем защиты веб-приложений и пользовательских данных. Каждый день миллионы людей используют различные онлайн-сервисы,. . .
Как получить индекс в цикле for в Python
bytestream 21.01.2025
При работе с коллекциями данных в Python часто возникает необходимость не только получить доступ к элементам последовательности, но и знать их позицию в процессе итерации. Индексация в циклах. . .
Как определить адрес, из которого локальный репозиторий Git был клонирован
bytestream 21.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемой частью рабочего процесса. При работе с Git разработчики часто сталкиваются с необходимостью. . .
Какая разница между операторами == и === в сравнениях в JavaScript
bytestream 21.01.2025
В мире веб-разработки JavaScript занимает особое место как динамический язык программирования, предоставляющий разработчикам широкий набор инструментов для создания интерактивных веб-приложений. . . .
Из чего и как собрать свой домашний кинотеатр
bt_guru 21.01.2025
Создание домашнего кинотеатра: от идеи до реализации В современном мире домашний кинотеатр стал неотъемлемой частью комфортного жилого пространства, предоставляя возможность наслаждаться. . .
Ошибки стиральных машин
bt_guru 21.01.2025
Современные стиральные машины представляют собой сложные электронные устройства, оснащенные множеством датчиков и систем контроля. Они способны самостоятельно определять вес загруженного белья,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru