Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
BabaSveta
0 / 0 / 1
Регистрация: 17.10.2014
Сообщений: 153
1

Программа не считывает с файла текст полностью

07.04.2015, 07:25. Просмотров 907. Ответов 22
Метки нет (Все метки)

Делаю алфавитно-частотный словарь, и во время передачи всех символов из файла в строку(дабы дальше я с помощью токенов строку разделил) у меня почему-то цикл при EOF прекращается....

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
#include <iostream>
#include <fstream>
#include <locale> 
#include "head.h"
#include <cstdio>
 
using namespace std;
 
int main()
{
system("CLS");
setlocale(LC_ALL,"rus");
 
 
char *new_word;             // Новое слово
 
FILE *in;                   // Исходный файл
in = fopen("input.txt", "r");   //Открываем файл
 
 
int i=0;    //Для подсчёта кол-ва символов в файле
if(in != NULL)  //если файл удалось открыть
{
    //char ch;  //Чтобы работать с символом
    //while((ch = getc(in)) != EOF) //пока не дойдём до конца файла
    //  i++;        //Получаем кол-во символов, чтобы позже выделить память динамически
    //cout << i ;
 
    // перемотать на конец файла
 
    fseek( in, 0, SEEK_END );
 
    // получить размер файла
    i = ftell( in );
    cout << i;
    
} 
else
{
    cout << "Файла нету... Обидка :(";
}
 
char *stroka = "\0";
stroka = new char[++i];
memset(stroka, '\0', sizeof(char)*i);   // Заполнение массива '\0'
 
fseek(in , 0, SEEK_SET); //перекиываем каретку в начало
 
char ch;
int z = 0;
while((ch = getc(in)) != EOF)
    stroka[z++] = tolower(ch); //ВОТ В ЭТОМ МЕСТЕ у меня программа должна проходить по всему тексту файла, но почему-то берёт только "asd q q q q q Название Название <Велика", а дальше выходит из цикла и другой текст не читает... 
stroka[z] = '\0';
 
 
 
system("pause");
delete []stroka; //Очищаем память
 
}
В чём проблема?
Вот пример текста:
"
asd q q q q q Название Название <Великая война> стало использоваться в СССР после радиообращения Сталина к народу 3 июля 1941 года[2]. В обращении эпитеты <великая> и <отечественная> употребляются раздельно[3]. В 1914-1915 гг. название <Великая Отечественная война> иногда применялось в неофициальных публикациях к Первой мировой войне[4]. Впервые это словосочетание было применено к войне СССР с Германией в статьях газеты <Правда> от 23 и 24 июня 1941 года[5][6] и поначалу воспринималось не как термин, а как одно из газетных клише, наряду с другими подобными словосочетаниями: <священная народная война>, <священная отечественная народная война>, <победоносная отечественная война>. Термин <Отечественная война> был закреплён введением военного Ордена Отечественной войны, учреждённого Указом Президиума Верховного Совета СССР от 20 мая 1942 года. Наименование сохраняется в постсоветских государствах (укр. Велика Вітчизняна війна, белор. Вялікая Айчынная вайна, абх. Аџьынџьт?ылат?и Еибашьра ду и др.). В странах, не входивших в состав СССР, где русский язык не является основным языком общения, название <Великая Отечественная война> практически не используется. В англоязычных странах его заменяет термин - Eastern Front (World War II) (восточный фронт (второй мировой войны)), в немецкой историографии - Deutsch-Sowjetischer Krieg, Russlandfeldzug, Ostfeldzug (немецко-советская война, русский поход, восточный поход).
"
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2015, 07:25
Ответы с готовыми решениями:

Обрабатываемый текст программа считывает из файла
// программа считывает текст с консоли(то есть те, которые мы вводим), как сделать, чтобы она...

программа, которая считывает текст из файла
Написать программу, которая считывает текст из файла и выводит на экран толь* ко предложения,...

Программа, которая считывает текст из файла, и выводит на экран только цитаты
Написать программу, которая считывает текст из файла и выводит на экран только цитаты, то есть...

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

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

22
nmcf
6526 / 5750 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
07.04.2015, 09:36 2
Проблема в том, что у буквы 'я' код такой же, как у EOF.
Используй feof().
1
gazlan
3162 / 1921 / 312
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
07.04.2015, 10:37 3
Лучший ответ Сообщение было отмечено BabaSveta как решение

Решение

Цитата Сообщение от BabaSveta Посмотреть сообщение
В чём проблема?
Неверный тип в строке 49: char ch;
1
BabaSveta
0 / 0 / 1
Регистрация: 17.10.2014
Сообщений: 153
07.04.2015, 18:14  [ТС] 4
поменял на
C++
1
2
3
while((ch = getc(in)) != feof(in))
    stroka[z++] = tolower(ch);
stroka[z] = '\0';
но теперь, почему-то строка у меня заполняется лишними символами 'я' и выдает ошибку
http://www.cyberforum.ru/attachment....1&d=1428419561
http://www.cyberforum.ru/attachment....1&d=1428417603
0
Миниатюры
Программа не считывает с файла текст полностью   Программа не считывает с файла текст полностью  
nmcf
6526 / 5750 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
07.04.2015, 18:22 5
Где я говорил, что надо вставить вместо EOF?
C++
1
2
3
4
5
6
7
8
9
char ch;
int z = 0;
while(true)
{
    ch = getc(in);
    if (feof(in)) break;
    stroka[z++] = tolower(ch); 
}
stroka[z] = '\0';
0
gazlan
3162 / 1921 / 312
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
07.04.2015, 18:28 6
Цитата Сообщение от BabaSveta Посмотреть сообщение
поменял на
Сказано же: Неверный тип в строке 49
0
nmcf
6526 / 5750 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
07.04.2015, 18:30 7
gazlan, при чём тут тип? Ну будет он int, всё равно цикл завершится на 'я'.
0
gazlan
3162 / 1921 / 312
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
07.04.2015, 18:38 8
prove:
0
Миниатюры
Программа не считывает с файла текст полностью  
gazlan
3162 / 1921 / 312
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
07.04.2015, 18:40 9
Цитата Сообщение от nmcf Посмотреть сообщение
всё равно цикл завершится на 'я'.
Вдумчиво смотрим на скрин из предыдущего поста.
0
nmcf
6526 / 5750 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
07.04.2015, 18:55 10
Ну кто же знал, что байты считываются без знака, а потом преобразуются в знаковый char. В описании функций об этом не говорится.
Тем не менее мой вариант рабочий.
0
gazlan
3162 / 1921 / 312
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
07.04.2015, 19:05 11
Цитата Сообщение от nmcf Посмотреть сообщение
В описании функций
В описании функции сказано предельно ясно: int getc(FILE* stream);

If the stream is at the end-of-file when called, the function returns EOF and sets the end-of-file indicator for the stream (feof).
И EOF - это ни разу не char. Ни со знаком, ни без.
0
nmcf
6526 / 5750 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
07.04.2015, 23:08 12
Цитата Сообщение от gazlan Посмотреть сообщение
В описании функции сказано предельно ясно: int
int знаковый, значит логично предположить, что 0xFF станет -1, а не 255.
0
gazlan
3162 / 1921 / 312
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
08.04.2015, 00:46 13
Цитата Сообщение от nmcf Посмотреть сообщение
предположить

Не по теме:

Выучите, наконец, разницу между целыми типами и не морочьте голову "предположениями".

0
nmcf
08.04.2015, 10:02
  #14

Не по теме:

gazlan, заканчивай. На разницу между целыми типами я и сослался.

0
BabaSveta
0 / 0 / 1
Регистрация: 17.10.2014
Сообщений: 153
11.04.2015, 07:55  [ТС] 15
Почему-то не могу удалить динамически выделенную память.
Вот код, с помощью которого я создаю элементы в односвязном списке.

C++
1
2
3
4
5
6
7
8
9
10
11
PNode CreateNode(char *NewWord, int i);                 // Создание нового узла
 
PNode CreateNode(char *NewWord, int i)
{
PNode NewNode = new Node;
NewNode->word = new char[i];
strcpy((char*)NewNode->word, (char*)NewWord);
NewNode->count = 1;
NewNode->next = NULL;
return NewNode;
}
А вот код, с помощью которого, я хочу удалить динамически выделенные слова в этих элементах.
Что я делаю не так?
C++
1
2
3
4
while(Head->next!=NULL){
    delete [] Head->word;
    Head = Head->next;
}
Выдаёт ошибку
http://www.cyberforum.ru/attachment....1&d=1428728137
0
Миниатюры
Программа не считывает с файла текст полностью  
nmcf
6526 / 5750 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
11.04.2015, 08:14 16
C++
1
2
3
4
5
6
7
h = Head;
while(h != NULL)
{
    delete[] h->word;
    h->word = NULL;
    h = h->next;
}
0
BabaSveta
0 / 0 / 1
Регистрация: 17.10.2014
Сообщений: 153
11.04.2015, 08:30  [ТС] 17
не работает, всё равно выдаёт ошибку.. На всякий случай выложу полностью весь код программы:

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
96
97
98
//файл main.cpp
#include <iostream>
#include <fstream>
#include <locale> 
#include "head.h"
#include <cstdio>
 
using namespace std;
 
int main()
{
system("CLS");
setlocale(LC_ALL,"rus");
 
PNode Head = NULL;          // Голова списка
PNode Found_Word = NULL;    // Найденное слово
PNode Place_insert = NULL;  // Место вставки
 
char *new_word;             // Новое слово
 
FILE *in;                   // Исходный файл
in = fopen("input.txt", "r");   //Открываем файл
 
 
int i=0;    //Для подсчёта кол-ва символов в файле
if(in != NULL)  //если файл удалось открыть
{
    fseek( in, 0, SEEK_END );   //Смещаем каретку на конец файла
 
    // получить размер файла
    i = ftell( in );//возвращает кол-во байтов от начала файла
    cout << i;
} 
else
{
    cout << "Файла нету... Обидка :(";
}
 
char *stroka = "\0";
stroka = new char[++i];
memset(stroka, '\0', sizeof(char)*i);   // Заполнение массива '\0'
 
fseek(in , 0, SEEK_SET); //перекиываем каретку в начало
 
int ch;
int z = 0;
 
while((ch = getc(in)) != EOF)
    stroka[z++] = tolower(ch);
stroka[z] = '\0';
 
const char separator[]=" \.,<>1234567890-[]{}()\b";
char *Ptr=NULL;
 
Ptr=strtok(stroka,separator); //Исходная строка будет изменена
cout << endl;
while (Ptr)
{
    int simvols = strlen(Ptr);
    //cout << Ptr << " " << simvols <<"\n"; //выводим слово из строки на экран
    if((Found_Word = Find(Head, Ptr))!=NULL)        //Если слово нашлось
        Found_Word->count++;
    else{
        Found_Word = CreateNode(Ptr, simvols);  // Если слова в списке нет, то создать новый узел
        Place_insert = FindPlace(Head, Ptr);    // Найти узел, перед которым нужно вставить слово
            if (Place_insert == NULL)           //место вставки
                AddLast(&Head, Found_Word);     // Если слово некуда вставить, то вставляем в конец списка
            else
                AddBefore(&Head, Place_insert, Found_Word);   // Иначе добавить слово перед заданным 
        }
        Found_Word = NULL;
        Place_insert = NULL;
 
    Ptr=strtok(0,separator); //указываем на новый токен
}
 
ofstream out("output.txt");  // Открываем полученный файл для записи
    PNode h = Head;
    while (h != NULL){
        cout << "(" << h->word << ")"<< " " <<h->count << endl;
        out << "(" << h->word << ")"<< " " <<h->count << endl;
        h = h->next;   
    }
    cout << "Программа закончила свою работу"<< endl;
system("pause");
delete []stroka; //Очищаем память
 
PNode h1;
h1 = Head;
while(h1 != NULL)
{
    delete[] h1->word;
    h1->word = NULL;
    h1 = h1->next;
}
 
 
}
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
96
97
98
99
100
101
102
//файл head.h
 
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <locale>
#include <conio.h>
 
using namespace std;
 
struct Node
{
    char *word;      // Слово
    int count;       // Cчетчик повторений
    Node *next;      // Ссылка на следующий элемент
};
 
typedef Node *PNode; // Указатель на эту структуру
 
/*...............................................................................*/
PNode CreateNode(char *NewWord, int i);                 // Создание нового узла
 
PNode CreateNode(char *NewWord, int i)
{
PNode NewNode = new Node;
NewNode->word = new char[i];
strcpy((char*)NewNode->word, (char*)NewWord);
NewNode->count = 1;
NewNode->next = NULL;
return NewNode;
}
 
/*...............................................................................*/
PNode Find(PNode Head, char *NewWord);       // Поиск слова в списке
 
PNode Find(PNode Head, char *NewWord)
{
    PNode q = Head;
    while (q && strcmp((char*)q->word, (char*)NewWord)) //strcmp - возвращает 0, если строки равны
        q = q->next;
    return q;
}
/*...............................................................................*/
 
/*...............................................................................*/
void AddFirst(PNode * Head, PNode NewNode);         // Добавление в начало списка
 
void AddFirst(PNode * Head, PNode NewNode)
{
    NewNode->next = *Head;
    *Head = NewNode;
}
/*...............................................................................*/
void AddAfter(PNode p, PNode NewNode);      // Добавление узла после заданного
 
void AddAfter(PNode p, PNode NewNode)
{
    NewNode->next = p->next;
    p->next = NewNode;
}
/*...............................................................................*/
void AddLast(PNode *Head, PNode NewNode);       // Добавление в конец списка
 
void AddLast(PNode *Head, PNode NewNode)
{
    PNode q = *Head;
    if (*Head == NULL){     //Если пока нет ни одного элемента
        AddFirst(Head, NewNode);   // Добавляем в пустой список
        return;
    }
    while (q->next)     //пока существует следующий элемент
        q = q->next;  // Ищем последний узел
    AddAfter(q, NewNode);   // Добавляем узел после узла q
}
/*...............................................................................*/
void AddBefore(PNode * Head, PNode p, PNode NewNode); // Добавление узла перед заданным
 
void AddBefore(PNode * Head, PNode p, PNode NewNode)
{
    PNode q = *Head;
    if (*Head == p){
        AddFirst(Head, NewNode);   // Добавление в начало списка
        return;
    }
 
    while (q && q->next != p)  // Ищем узел, за которым будет узел р
        q = q->next;
    if (q)
        AddAfter(q, NewNode);  // Добавляем узел после узла q
}
/*...............................................................................*/
/*...............................................................................*/
PNode FindPlace(PNode Head, char NewWord[]);        // Куда вставить новое слово?
 
PNode FindPlace(PNode Head, char NewWord[])
{
    int i = 0;
    PNode q = Head;
    while (q && (i = strcmp((char*)NewWord, (char*)q->word) > 0))  // Пока q существует и значение в скобках > 0, т.е. слова не равны дург другу
        q = q->next;
    return q;
}
/*...............................................................................*/
0
nmcf
6526 / 5750 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
11.04.2015, 10:14 18
Лучший ответ Сообщение было отмечено BabaSveta как решение

Решение

Так попробуй.
C++
1
2
3
4
5
6
7
8
9
10
11
PNode CreateNode(char *NewWord, int i)
{
PNode NewNode = new Node;
 
NewNode->word = new char[i + 1];
 
strcpy(NewNode->word, NewWord);
NewNode->count = 1;
NewNode->next = NULL;
return NewNode;
}
1
BabaSveta
0 / 0 / 1
Регистрация: 17.10.2014
Сообщений: 153
11.04.2015, 14:25  [ТС] 19
Почему-то в начале файла и иногда в середине происходит неправильный вывод в файл, почему так получается?
От меня "спасибо" и "Лучший ответ" за решение этой проблемы.

На всякий случай, выложу исправленный предыдущим постом код:

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
96
97
98
//файл main.cpp
#include <iostream>
#include <fstream>
#include <locale> 
#include "head.h"
#include <cstdio>
 
using namespace std;
 
int main()
{
system("CLS");
setlocale(LC_ALL,"rus");
 
PNode Head = NULL;          // Голова списка
PNode Found_Word = NULL;    // Найденное слово
PNode Place_insert = NULL;  // Место вставки
 
char *new_word;             // Новое слово
 
FILE *in;                   // Исходный файл
in = fopen("input.txt", "r");   //Открываем файл
 
 
int i=0;    //Для подсчёта кол-ва символов в файле
if(in != NULL)  //если файл удалось открыть
{
    fseek( in, 0, SEEK_END );   //Смещаем каретку на конец файла
 
    // получить размер файла
    i = ftell( in );//возвращает кол-во байтов от начала файла
    cout << i;
} 
else
{
    cout << "Файла нету... Обидка :(";
}
 
char *stroka = "\0";
stroka = new char[++i];
memset(stroka, '\0', sizeof(char)*i);   // Заполнение массива '\0'
 
fseek(in , 0, SEEK_SET); //перекиываем каретку в начало
 
int ch;
int z = 0;
 
while((ch = getc(in)) != EOF)
    stroka[z++] = tolower(ch);
stroka[z] = '\0';
 
const char separator[]=" \.,<>1234567890-[]{}()\b\"«»?!%:;/\#№";
char *Ptr=NULL;
 
Ptr=strtok(stroka,separator); //Исходная строка будет изменена
cout << endl;
while (Ptr)
{
    int simvols = strlen(Ptr);
    //cout << Ptr << " " << simvols <<"\n"; //выводим слово из строки на экран
    if((Found_Word = Find(Head, Ptr))!=NULL)        //Если слово нашлось
        Found_Word->count++;
    else{
        Found_Word = CreateNode(Ptr, simvols);  // Если слова в списке нет, то создать новый узел
        Place_insert = FindPlace(Head, Ptr);    // Найти узел, перед которым нужно вставить слово
            if (Place_insert == NULL)           //место вставки
                AddLast(&Head, Found_Word);     // Если слово некуда вставить, то вставляем в конец списка
            else
                AddBefore(&Head, Place_insert, Found_Word);   // Иначе добавить слово перед заданным 
        }
        Found_Word = NULL;
        Place_insert = NULL;
 
    Ptr=strtok(0,separator); //указываем на новый токен
}
 
ofstream out("output.txt");  // Открываем полученный файл для записи
    PNode h = Head;
    while (h != NULL){
        cout << "(" << h->word << ")"<< " " <<h->count << endl;
        out << "(" << h->word << ")"<< " " <<h->count << endl;
        h = h->next;   
    }
    cout << "Программа закончила свою работу"<< endl;
system("pause");
delete []stroka; //Очищаем память
 
PNode h1;
h1 = Head;
while(h1 != NULL)
{
    delete[] h1->word;
    h1->word = NULL;
    h1 = h1->next;
}
 
 
}

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
96
97
98
99
100
101
//файл head.h
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <locale>
#include <conio.h>
 
using namespace std;
 
struct Node
{
    char *word;      // Слово
    int count;       // Cчетчик повторений
    Node *next;      // Ссылка на следующий элемент
};
 
typedef Node *PNode; // Указатель на эту структуру
 
/*...............................................................................*/
PNode CreateNode(char *NewWord, int i);                 // Создание нового узла
 
PNode CreateNode(char *NewWord, int i)
{
PNode NewNode = new Node;
NewNode->word = new char[i+1];
strcpy((char*)NewNode->word, (char*)NewWord);
NewNode->count = 1;
NewNode->next = NULL;
return NewNode;
}
 
/*...............................................................................*/
PNode Find(PNode Head, char *NewWord);       // Поиск слова в списке
 
PNode Find(PNode Head, char *NewWord)
{
    PNode q = Head;
    while (q && strcmp((char*)q->word, (char*)NewWord)) //strcmp - возвращает 0, если строки равны
        q = q->next;
    return q;
}
/*...............................................................................*/
 
/*...............................................................................*/
void AddFirst(PNode * Head, PNode NewNode);         // Добавление в начало списка
 
void AddFirst(PNode * Head, PNode NewNode)
{
    NewNode->next = *Head;
    *Head = NewNode;
}
/*...............................................................................*/
void AddAfter(PNode p, PNode NewNode);      // Добавление узла после заданного
 
void AddAfter(PNode p, PNode NewNode)
{
    NewNode->next = p->next;
    p->next = NewNode;
}
/*...............................................................................*/
void AddLast(PNode *Head, PNode NewNode);       // Добавление в конец списка
 
void AddLast(PNode *Head, PNode NewNode)
{
    PNode q = *Head;
    if (*Head == NULL){     //Если пока нет ни одного элемента
        AddFirst(Head, NewNode);   // Добавляем в пустой список
        return;
    }
    while (q->next)     //пока существует следующий элемент
        q = q->next;  // Ищем последний узел
    AddAfter(q, NewNode);   // Добавляем узел после узла q
}
/*...............................................................................*/
void AddBefore(PNode * Head, PNode p, PNode NewNode); // Добавление узла перед заданным
 
void AddBefore(PNode * Head, PNode p, PNode NewNode)
{
    PNode q = *Head;
    if (*Head == p){
        AddFirst(Head, NewNode);   // Добавление в начало списка
        return;
    }
 
    while (q && q->next != p)  // Ищем узел, за которым будет узел р
        q = q->next;
    if (q)
        AddAfter(q, NewNode);  // Добавляем узел после узла q
}
/*...............................................................................*/
/*...............................................................................*/
PNode FindPlace(PNode Head, char NewWord[]);        // Куда вставить новое слово?
 
PNode FindPlace(PNode Head, char NewWord[])
{
    int i = 0;
    PNode q = Head;
    while (q && (i = strcmp((char*)NewWord, (char*)q->word) > 0))  // Пока q существует и значение в скобках > 0, т.е. слова не равны дург другу
        q = q->next;
    return q;
}
/*...............................................................................*/
Заранее спасибо!
0
Миниатюры
Программа не считывает с файла текст полностью   Программа не считывает с файла текст полностью  
BabaSveta
0 / 0 / 1
Регистрация: 17.10.2014
Сообщений: 153
11.04.2015, 14:47  [ТС] 20
вот текст в файл input.txt для примера:
"
Наверное, каждый уже задавал себе этот вопрос: почему-то, когда смотришь новости с «евромайдана», всё время вспоминается русская народная сказка «Волк и Лиса», в которой хитрая Лиса, коварством покалечила Волка, передёргиванием залезла ему на спину и обманом заставила его себя везти. При этом издевательски приговаривая: «Битый небитого везёт».

А людям, связанным с музыкальной средой, эта же самая ситуация отчётливо напоминает некое ужасное по своей сути произведение, тем не менее разыгранное по заранее написанным нотам, которые есть только у исполнителей. А все остальные люди, в том числе украинцы и русские на Украине, в этой ситуации поставлены в позицию слушателей – мол, внимайте нашему представлению, мы вас вокруг пальца обведём. Причём столько раз, что вы основательно запутаетесь.

Как не все способны в симфоническом оркестре слышать каждую скрипку по отдельности, так и не все способны разобраться в панмировом кровавом спектакле под названием «Евромайдан». Большинство людей – обычные нормальные люди. Они просто слушают новости и сопереживают.



Миссионер из Израиля

В первое воскресенье марта 2014 года в своей телепередаче ведущий Владимир Рудольфович Соловьёв собрал экспертов по украинскому вопросу. Точнее сказать, по украинской трагедии. Соловьёв, как всегда, похвастался тем, что он еврей, и заявил, что среди евреев есть сильные ребята, готовые выступить в соответствующей ситуации и проявить силу. Владимир даже специально на камеру пожевал желваками, чтобы показать решительность и мощь еврейского народа.

Это выступление во многом задало тон передаче, и публицист Авигдор Эскин с пылом, свойственным хорошему оратору, в свою очередь, заявил, что он прибыл на эту телепередачу из Иерусалима специально для того, чтобы разобраться в важном вопросе. Этот вопрос заключается в следующем. Как выразился Авигдор, у евреев тоже есть свои фекалии. Примерно так он охарактеризовал евреев, которые действуют в нарушение закона и во вред еврейской общине. После этого публицист назвал имена – это те, кто устроил сегодняшний Евромайдан: Кличко, Яценюк и Коломойский. В конце своего заявления Авигдор попросил себе полномочий для того, чтобы разобраться с указанными лицами: «Я так разберусь, так разберусь!».

Таким образом, украинский госпереворот предстал перед телезрителями центрального телевидения России совершенно в ином свете. Ведь почти все СМИ приписывают незаконные выступления неким «украинским» националистам и даже ищут свастику, а теперь уважаемые журналист Соловьёв и публицист Эскин заявляют о еврейском национализме, причём, не просто стоящем где-то в сторонке, а руководящем и финансирующем «евромайдан». Получается, что искать надо не свастику, а нужно фиксировать звезду Давида, которой полно на баррикадах. А это уже совсем другое дело. В ситуации, когда целая страна поставлена в состояние военного противостояния, когда нависла угроза территориальной целостности, к таким заявлениям необходимо относиться серьёзно и серьёзно на них реагировать.



Сыны Израиля

Позицию израильского публициста Эскина подтверждают и украинские СМИ, и, что более важно, израильские издания. Так, журнала «Лехаим» (№12, декабрь 2003 г.), сообщает, что «Кличко по отцу и матери чистокровный еврей, бабка его еврейка Тамара Этинзон». Портал «jewish.ru» в статье, посвящённой отцу Кличко, подтверждает данные журнала. Кроме этого сообщается, что «Тягнибок по матери чистокровный еврей, его бабка еврейка по фамилии Фротман, а прадед еврей Ленгин Цегельский. Яценюк по матери чистокровный еврей, его мать еврейка с фамилией Бакай. Один из его родственников по матери раввин Бакаи».

Из остальной оппозиции Пётр Порошенко – молдавский еврей, урождённый Вальцман, взявший после свадьбы фамилию жены («Forbes»), Виктор Пинчук – происходит из известного еврейского рода («Genshtab.info»), а писатель Эдуард Ходос утверждает, что «Юлия Владимировна Тимошенко – чудовище. Мать Юлии Тимошенко – еврейка». Об олигархе Коломойском и искать не приходится, он возглавляет Еврейский европейский парламент, силами и средствами которого на деньги самого Коломойского «евромайдан» и устроен.

Ну, и, пожалуй, самый яркий «украинский» националист – Ярош. На сайте «Иудаизм и евреи», в разделе «Спросите раввина» размещена небольшая энциклопедия «Еврейские фамилии». В ней есть статья «Что означает фамилия ЯРОШ?», которая даёт ответ: «Вероятно, что фамилия Ярош произошла от ивритского слова йореш, которое означает наследник. Очевидно, предок носителя этой фамилии унаследствовал имущество или другое существенное наследие».

Есть даже конкретизация: Авдим Ярош родился в еврейском местечке Каменское и уже в 12 лет знал наизусть Шулхан Арух и сочинения Зеева Жаботинского. Посмотреть на маленького гения в Каменское приезжал лично Менахем Бегин. После продолжительной беседы он благословил Авдима, и назвал его «будущим Маккавеем». Подросший Ярош стал одним из основателей сионистской террористической организации «Тризуб» им. Шимона Бендера. Да и Бандера, оказывается, галахический еврей: его мать Мирослава Глодзинская – польская еврейка.



Патологические революционеры

Осенью 2013 года президент России Владимир Путин дал жёсткую оценку кровавым революционным событиям и роли международного еврейства в них. Он сказал, что членами первого советского правительства «примерно на 80 – 85% были евреи». Тогда еврейские СМИ обозвали российского президента антисемитом.

Но вот новая революция. Теперь уже на Украине. И что мы видим? Ситуация повторяется. Во главе преступников, которые устраивают в стране кровавый государственный переворот снова стоят евреи. Отметим, антисемитизм здесь ни при чём, и это чётко показали в своих выступлениях Владимир Соловьёв и Авигдор Эскин.

Здесь важна другая ситуация. Как правильно заметил Эскин, преступники есть в любом народе. Простые евреи давно знают, что преступники из их среды входят в организацию Хабад, которая стоит за спинами Кличко, Яроша и других «украинских» еврейских националистов. Эта организация принесла уже много зла простым евреям. Но беда в том, что преступников из еврейской среды удалить затруднительно, они тут же прячутся за антисемитизм. Вспомним, сбежавших в Израиль преступников – руководителей Российского еврейского конгресса Леонида Невзлина и Владимира Гусинского. Вот и получается, еврейские олигархи совершают преступления, а простые евреи подвергаются гонениям. И это понятно: общины и существуют на деньги этих олигархов.
"
0
11.04.2015, 14:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2015, 14:47

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

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

Файлы. Программа, которая считывает текст из файла и выводит на экран все его предложения в обратном порядке
Помогите пожалуйста! Такая проблема, есть программа: #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt;...


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

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

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