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

работа с файлами - C++

Восстановить пароль Регистрация
 
Define
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 83
15.05.2010, 12:22     работа с файлами #1
Помогите пожалуйста. Нужно составить программу, которая читает текстовый файл и в каждой строке все слова размещает в алфавитном порядке. Язык Си(консольная).
Примечания:

1. Имя файла, который подлежит обработке, должно быть параметром программы.
2. Файл должен иметь не менее 10-15 строк текста.
3. Допускается ограничить максимальную длину строки в тексте 80 символами.
4. Допускается считать, что слова разделяются пробелами, а знаки препинания рассматривать как буквы.
5. Программу следует разрабатывать, исходя из предположения, что весь текст из файла не может быть размещен в оперативной памяти.
6. Допускается создавать при выполнении программы временные файлы, которые, однако, не должны сохранятся после окончания программы.
Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2010, 12:22     работа с файлами
Посмотрите здесь:

C++ Работа с файлами
C++ работа с файлами
C++ Работа с файлами.
Работа с файлами C++
C++ Работа с файлами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Define
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 83
19.05.2010, 20:40  [ТС]     работа с файлами #2
Помогите пожалуйста...хотя бы без файлов,как в каждой строке все слова разместить в алфавитном порядке
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
20.05.2010, 05:15     работа с файлами #3
нужно разрезать строку на слова, сохранить эти слова в массиве, потом отсортировать его, а потом записать его в строку обратно
дальше она идёт в новый файл
sprintf() - выводит в строку
strtok() - разделяет строку
strcmp() - сравнивает строки
Define
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 83
21.05.2010, 23:02  [ТС]     работа с файлами #4
спс,есть еще мысли?
Define
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 83
24.05.2010, 23:40  [ТС]     работа с файлами #5
вот эта программа на паскале как можно ее переделать в си:

Pascal
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
var t1, t2:string;
mn, mn1:set of char;
a:array[1..50] of string[25];
c:string[25];
kb, kp, ksl, i, k:byte;
p:boolean;
begin
  readln(t1); t1:=t1+'';
  mn1:=['.', '!', '?'];
  mn:=[' ', ',', '-', ':', ';'];
  kp:=0;
  kb:=0; ksl:=0;
  for i:=1 to length(t1)  do
  if  (t1[i] in mn1) then inc (kp);  writeln('kol-vo pred =', kp);{считаю кол-во предложений}
 
  for i:=1 to length(t1)  do
  if not (t1[i] in mn) then inc (kb)
  else if kb>0 then{пустые слова не берем}
    begin
      inc(ksl);{счетчик слов}
      a[ksl]:=copy(t1, i-kb, kb);
      kb:=0;
    end;
  k:=ksl;
  repeat{сортируем в алфавитном порядке}
    p:=true; dec(k);
    for i:=1 to k do
      if (a[i])>(a[i+1]) then {сравниваем сами слова}
        begin
          c:=a[i];
          a[i]:=a[i+1];
          a[i+1]:=c;
          p:=false;
        end;
      until p;
  t2:='';
  for i:=1 to ksl do
  t2:=t2+a[i]+' ';
  writeln('text v alfavitnom poradke   ', t2);
end.
Добавлено через 1 час 59 минут
и вариант ее же в с++
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
 
 
struct WORDS
{
        char a[50];
        char b[50];
};
 
bool check;
 
const int word_number = 5;  //The number of words
void sort_abc(int, WORDS[]);
bool check_abc(WORDS[]);
 
 
//-----------------------------------------------
 
int main()
{
        WORDS words[word_number];
        int entered;
 
        for(entered = 0; entered < word_number; ++entered) //To record the words
        {
                cout<<endl<<"Enter a word : ";
                cin>>words[entered].a;
                strcpy(words[entered].b, words[entered].a);
        }
        sort_abc(entered, words);
 
 
        system("PAUSE");
        return 0;
}
 
//-----------------------------------------------
 
void sort_abc(int entered, WORDS words[]) //Sorts the words
{
        int row = 0;
        int limit = 3;
        char temp[20];
        int write;
 
        cout<<"The list alphabetized is :"<<endl;
 
        for(row = 0;check_abc(words) != true; ++row)
        {
              if(row > limit)
              row = 0;
                        if(strcmp(words[row].a, words[row+1].a) > 0) //If the two words aren't in alphabetical order
                        {
                                cout<<"Changing words : "<<words[row].a<<" & "<<words[row+1].a<<endl;
 
                                strncpy(temp, words[row].a, 19);
                                temp[19]='\0';
                                strncpy(words[row].a, words[row+1].a, 19);
                                words[row].a[19] = '\0';
                                strncpy(words[row+1].a, temp, 19);
                                words[row+1].a[19] = '\0';
 
 
                        }
 
             check_abc(words);
        }
        for(write = 0; write !=word_number; ++write)
        cout<<words[write].a<<endl;
}
 
//-----------------------------------------------
 
bool check_abc(WORDS words[]) //Checks if the letters are in alphabetical order
{
        int max_limit = 0, limit = 0;
        int yes = 0;
 
        for(max_limit = word_number; max_limit !=0; --max_limit)
        {
                for(limit = 0; limit != max_limit; ++limit)
                {
                        if(strcmp(words[limit].a, words[max_limit].a) < 0)
                        yes++;
                }
        }
 
 
        if(yes == 10)
        check = true;
 
        return check;
}
Crudelis
Шаровик затейник
 Аватар для Crudelis
667 / 409 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
25.05.2010, 02:07     работа с файлами #6
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
 
 
struct WORDS
{
        char a[50];
        char b[50];
};
 
bool check;
 
const int word_number = 5;  //The number of words
void sort_abc(int, WORDS[]);
bool check_abc(WORDS[]);
 
 
//-----------------------------------------------
 
int main()
{
        WORDS words[word_number];
        int entered;
 
        for(entered = 0; entered < word_number; ++entered) //To record the words
        {
                printf("\nEnter a word : ");
                scanf("%s",words[entered].a);
                strcpy(words[entered].b, words[entered].a);
        }
        sort_abc(entered, words);
 
 
        system("PAUSE");
        return 0;
}
 
//-----------------------------------------------
 
void sort_abc(int entered, WORDS words[]) //Sorts the words
{
        int row = 0;
        int limit = 3;
        char temp[20];
        int write;
 
        printf("The list alphabetized is :\n");
 
        for(row = 0;check_abc(words) != true; ++row)
        {
              if(row > limit)
              row = 0;
                        if(strcmp(words[row].a, words[row+1].a) > 0) //If the two words aren't in alphabetical order
                        {
                                printf("Changing words : %s",words[row].a," & %s\n"words[row+1].a);
 
                                strncpy(temp, words[row].a, 19);
                                temp[19]='\0';
                                strncpy(words[row].a, words[row+1].a, 19);
                                words[row].a[19] = '\0';
                                strncpy(words[row+1].a, temp, 19);
                                words[row+1].a[19] = '\0';
 
 
                        }
 
             check_abc(words);
        }
        for(write = 0; write !=word_number; ++write)
        printf("%s\n",words[write].a);
}
 
//-----------------------------------------------
 
bool check_abc(WORDS words[]) //Checks if the letters are in alphabetical order
{
        int max_limit = 0, limit = 0;
        int yes = 0;
 
        for(max_limit = word_number; max_limit !=0; --max_limit)
        {
                for(limit = 0; limit != max_limit; ++limit)
                {
                        if(strcmp(words[limit].a, words[max_limit].a) < 0)
                        yes++;
                }
        }
 
 
        if(yes == 10)
        check = true;
 
        return check;
}
Define
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 83
25.05.2010, 11:12  [ТС]     работа с файлами #7
благодарю,однако прога все равно не идет
vladislavchick
35 / 35 / 1
Регистрация: 22.05.2010
Сообщений: 107
25.05.2010, 11:20     работа с файлами #8
А на С++ можно?
Crudelis
Шаровик затейник
 Аватар для Crudelis
667 / 409 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
25.05.2010, 12:00     работа с файлами #9
Цитата Сообщение от Define Посмотреть сообщение
и вариант ее же в с++
vladislavchick, думаю на с++ она тут где то есть, очень рядом
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2010, 12:24     работа с файлами
Еще ссылки по теме:

C++ Работа с файлами С++
Работа с файлами C++
C++ Работа с файлами

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

Или воспользуйтесь поиском по форуму:
Define
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 83
25.05.2010, 12:24  [ТС]     работа с файлами #10
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
 
 
struct WORDS
{
        char a[50];
        char b[50];
};
 
bool check;
 
const int word_number = 5;  //The number of words
void sort_abc(int, WORDS[]);
bool check_abc(WORDS[]);
 
 
//-----------------------------------------------
 
int main()
{
        WORDS words[word_number];
        int entered;
 
        for(entered = 0; entered < word_number; ++entered) //To record the words
        {
                cout<<endl<<"Enter a word : ";
                cin>>words[entered].a;
                strcpy(words[entered].b, words[entered].a);
        }
        sort_abc(entered, words);
 
 
        system("PAUSE");
        return 0;
}
 
//-----------------------------------------------
 
void sort_abc(int entered, WORDS words[]) //Sorts the words
{
        int row = 0;
        int limit = 3;
        char temp[20];
        int write;
 
        cout<<"The list alphabetized is :"<<endl;
 
        for(row = 0;check_abc(words) != true; ++row)
        {
              if(row > limit)
              row = 0;
                        if(strcmp(words[row].a, words[row+1].a) > 0) //If the two words aren't in alphabetical order
                        {
                                cout<<"Changing words : "<<words[row].a<<" & "<<words[row+1].a<<endl;
 
                                strncpy(temp, words[row].a, 19);
                                temp[19]='\0';
                                strncpy(words[row].a, words[row+1].a, 19);
                                words[row].a[19] = '\0';
                                strncpy(words[row+1].a, temp, 19);
                                words[row+1].a[19] = '\0';
 
 
                        }
 
             check_abc(words);
        }
        for(write = 0; write !=word_number; ++write)
        cout<<words[write].a<<endl;
}
 
//-----------------------------------------------
 
bool check_abc(WORDS words[]) //Checks if the letters are in alphabetical order
{
        int max_limit = 0, limit = 0;
        int yes = 0;
 
        for(max_limit = word_number; max_limit !=0; --max_limit)
        {
                for(limit = 0; limit != max_limit; ++limit)
                {
                        if(strcmp(words[limit].a, words[max_limit].a) < 0)
                        yes++;
                }
        }
 
 
        if(yes == 10)
        check = true;
 
        return check;
}
Yandex
Объявления
25.05.2010, 12:24     работа с файлами
Ответ Создать тему
Опции темы

Текущее время: 02:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru