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

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

Войти
Регистрация
Восстановить пароль
 
Sergey_O
5 / 5 / 1
Регистрация: 09.12.2009
Сообщений: 65
#1

Копирование строчек по критерию отсутсвия буквы. - C++

14.12.2009, 00:20. Просмотров 367. Ответов 2
Метки нет (Все метки)

Добрый вечер. Очередная проблема и вновь обращаюсь к этому форуму)))
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#include <iostream>
#include <stdio.h>
using namespace std;
int n1,n2;
 
 
 
struct STROKI{char stroka[26];} stroki[100];
int kolstr; int num=0, num2=0;
 
 
void rus()
 
{
    setlocale( LC_ALL,"Russian" );
}
 
int readfile1()
{
    FILE *file;
    file = fopen("f1.txt", "r+");
    if (file == NULL) return 0;
    for(int i=0; fscanf(file,"%s",&stroki[i].stroka)==1;i++)
    {
        num++;
    }
    
    fclose(file);
    return 1;
}
 
 
 
void printfile1()
{
    for (int i=0;i<num;i++)
    {
        printf ("\n%s",&stroki[i].stroka);
    }
}
int readfile2()
{
    FILE *file2;
    file2 = fopen("f2.txt", "r+");
    if (file2 == NULL) return 0;
    for(int i=0; fscanf(file2,"%s",&stroki[i].stroka)==1;i++)
    {
        num2++;
    }
    
    fclose(file2);
    return 1;
}
 
void printfile2()
{
    for (int i=0;i<num2;i++)
    {
        printf ("\n%s",&stroki[i].stroka);
    }
}
int copy()
{
    FILE *file2;
    file2 = fopen("f2.txt", "w");
    int kol_a;
    char bukva[]="A";
    if (file2 == NULL) return 0;
    for(int i=n1;i<=n2;i++)
    {
        kol_a=0;
        for(int m=0;m<26;m++)
        {
            if(strcmp(&stroki[i].stroka[m],bukva))
            {}
            else kol_a++;
        }
        if (kol_a==0)
        {
              fprintf(file2, "%s\n", &stroki[i].stroka);
              num2++;
        }
    }
    fclose(file2);
    return 1;
}
void zaprosn1n2()
{
    cout << "\nВведите промежуок для рассмотрения строк" << endl;
    cin >> n1 >> n2;
}
//void poisk()
//{
//  char glassnie_a[]="A";
//    char glassnie_o[]="O";
//  char glassnie_e[]="E";
//    char glassnie_i[]="I";
//  int nomer_stroki=0,kol_vo=0;
//  for(int i=0;i<num2;i++)
//      {for(int m=0;m<26;m++)
//              {
//                  if(strcmp(&stroki[i].stroka[m],glassnie_a))
//                         {}
//                 else 
//                        {
//                          kol_vo++;
//                          nomer_stroki=i;
//                          cout << "\n" << kol_vo << " " << nomer_stroki << endl;
//                        }
//                  if(strcmp(&stroki[i].stroka[m],glassnie_o))
//                         {}
//                 else 
//                        {
//                          kol_vo++;
//                          nomer_stroki=i;
//                          cout << "\n" << kol_vo << " " << nomer_stroki << endl;
//                        }
//                  if(strcmp(&stroki[i].stroka[m],glassnie_e))
//                         {}
//                 else 
//                        {
//                          kol_vo++;
//                          nomer_stroki=i;
//                          cout << "\n" << kol_vo << " " << nomer_stroki << endl;
//                        }
//            
//  }
//  }
//  cout << "\n" << nomer_stroki;
//}
 
 
void  main()
{
    rus();
    readfile1();
    printfile1();
    zaprosn1n2();
    copy();
    readfile2();
    printfile2();
    //poisk();
 
}
Суть такая: в функции copy я пытаюсь скопировать все строчки без буквы А в другой файл.
в функции poisk пытаюсь найти строчку с наибольшим числом гласных букв.

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

Буду благодарен за любые подсказки.

Добавлено через 1 час 57 минут
блин, уже все варианты перебрал, которые пришли в голову(((
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2009, 00:20     Копирование строчек по критерию отсутсвия буквы.
Посмотрите здесь:

Отсортируйте строки таблицы в первую очередь по первому критерию, при равенстве по первому критерию, отсортируйте по второму - C++
Задача готова, надо найти мелкий баг. Есть прямоугольная таблица, содержащая слова. Каждые ее столбец имеет свое имя. Задан набор...

Поясните пару строчек - C++
Приветствую форумчане! Поясните пожалуйста пару кусочков программы. 1 часть: char a; a=0; if (!a) { ... };

Обмен строчек в матрице - C++
вообщем немогу найти ошибку(ничего не меняет #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;locale&gt; using namespace std; ...

Матрица, сумма строчек - C++
Вообщем мне нужно подправить вывод матрицы(чтобы выводилась как матрица и сумму строчек // matraca.cpp: определяет точку входа для...

Подсчет строчек в файле - C++
Здравствуйте, Подскажите, пожалуйста, как подсчитать кол-во строк в текстовом файле и вывести каждую строку поочередно на экран?

Программа для склеивания строчек - C++
Всем доброго времени суток.столкнулся с такой проблемой,писали на лаба программу для склеивания строчек на С++,принес домой,отказывается...

Разбор строчек небольшого кода - C++
Помогите разобрать каждую строку ( что она делает - описание ) #include &lt;iostream&gt; using namespace std; int main(){ unsigned...

Какое предназначание каждой из строчек - C++
#include &lt;iostream&gt; using std::cout; int main () { cout&lt;&lt;&quot;Унылая пора! Очей очарованье!\n&quot;; cout&lt;&lt;&quot;Приятна мне твоя...

Некорректное отображение строчек анкеты C++ - C++
При введении на экран анкеты происходит некорректное отображение строчек Номер телефона?= Место учебы?=. Подскажите, как это исправить? ...

Промежуток между написанием строчек - C++
Я работаю через программу dev c++ и недавно я столкнулся с проблемой при написании следующего: cout&lt;&lt;rus(&quot; Тут текст1&quot;)&lt;&lt;endl; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
1372 / 883 / 52
Регистрация: 02.01.2009
Сообщений: 2,652
Записей в блоге: 1
14.12.2009, 00:52     Копирование строчек по критерию отсутсвия буквы. #2
Конкретно в чем проблема вы так и не сказали..
Если не можете скопировать все строчки без буквы А то вот..
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
#include <iostream>
 
bool if_a(char a){
    return a != 'a';
}
typedef bool (*func)(char);
 
void copy_if(const char *begin, const char *end, char *out, func f){
    for(; begin != end; ++begin){
        if(f(*begin))
            *out++ = *begin;
    }
    *out = '\0';
}
int main(){
    const char *str[] = {"laine 1a",
                         "liane 2aa",
                         "alaianaea 3aa"};
    char o_str[3][20];
 
    copy_if(str[0], str[0] + strlen(str[0]), o_str[0], if_a);
    copy_if(str[1], str[1] + strlen(str[1]), o_str[1], if_a);
    copy_if(str[2], str[2] + strlen(str[2]), o_str[2], if_a);
 
    std::cout << o_str[0] << std::endl;
    std::cout << o_str[1] << std::endl;
    std::cout << o_str[2] << std::endl;
 
    return 0;
}
в str - допустим записали данные из файла..
в o_str - поместили модифицированные строки.. потом записывайте заново в файл.
Sergey_O
5 / 5 / 1
Регистрация: 09.12.2009
Сообщений: 65
14.12.2009, 01:05  [ТС]     Копирование строчек по критерию отсутсвия буквы. #3
Цитата Сообщение от ISergey Посмотреть сообщение
Конкретно в чем проблема вы так и не сказали..
Если не можете скопировать все строчки без буквы А то вот..
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
#include <iostream>
 
bool if_a(char a){
    return a != 'a';
}
typedef bool (*func)(char);
 
void copy_if(const char *begin, const char *end, char *out, func f){
    for(; begin != end; ++begin){
        if(f(*begin))
            *out++ = *begin;
    }
    *out = '\0';
}
int main(){
    const char *str[] = {"laine 1a",
                         "liane 2aa",
                         "alaianaea 3aa"};
    char o_str[3][20];
 
    copy_if(str[0], str[0] + strlen(str[0]), o_str[0], if_a);
    copy_if(str[1], str[1] + strlen(str[1]), o_str[1], if_a);
    copy_if(str[2], str[2] + strlen(str[2]), o_str[2], if_a);
 
    std::cout << o_str[0] << std::endl;
    std::cout << o_str[1] << std::endl;
    std::cout << o_str[2] << std::endl;
 
    return 0;
}
в str - допустим записали данные из файла..
в o_str - поместили модифицированные строки.. потом записывайте заново в файл.
да, проблема именно в том, что не получается скопировать строчки без буквы А.
за код огромное спасибо, но можно ещё глянуть, в чём у меня ошибка?
Yandex
Объявления
14.12.2009, 01:05     Копирование строчек по критерию отсутсвия буквы.
Ответ Создать тему
Опции темы

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