Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

14.12.2009, 00:20. Просмотров 376. Ответов 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 минут
блин, уже все варианты перебрал, которые пришли в голову(((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2009, 00:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Копирование строчек по критерию отсутсвия буквы. (C++):

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

Получение массива значений по критерию и копирование его на лист - VBA
Доброго времени суток! :) Уважаемые. Пожалуйста помогите решить задачу? Есть табличка; В первом столбце - заказы, во втором...

Удалить из однотипных строчек все буквы и символы кроме цифр - C#
есть переменная в которой храниться значение вот такого типа bet.html?hl=15157999. мне нужно получить только цифры как это сделать. все...

В новый файл копировать первые несколько строчек и столько же последних строчек - Pascal
Итак, у нас есть текстовый файл где записано стихотворение. Вот что надо сделать: в новый файл копировать первые несколько строчек и...

Chipset тормозит. Может ли это быть из-за отсутсвия драйверов? - Компьютерное железо
У меня очень просто вопрос: возможны ли тормоза или какие-либо еще неурядици из-за отсутствия драйвера чипсета, и если возможны, то какие...

Написать процедуру VBA (плотное копирование, замена буквы) - VBA
Господа программисты! Взываю о помощи! Есть две задачи: 1) Написать процедуру, которая копирует числа из столбца A1:A10 Листа1 (между...

2
ISergey
Maniac
Эксперт С++
1390 / 901 / 55
Регистрация: 02.01.2009
Сообщений: 2,693
Записей в блоге: 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 - поместили модифицированные строки.. потом записывайте заново в файл.
0
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 - поместили модифицированные строки.. потом записывайте заново в файл.
да, проблема именно в том, что не получается скопировать строчки без буквы А.
за код огромное спасибо, но можно ещё глянуть, в чём у меня ошибка?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2009, 01:05
Привет! Вот еще темы с ответами:

Напишите программу, которая заменяет в символьной строке все буквы a на буквы b , a буквы A на буквы B - Pascal
Здравствуйте,помогите пожалуйста написать программу .Напишите программу, которая заменяет в символьной строке все буквы a на буквы b , a...

Количество строчек - Delphi
Как узнать точное количество строчек во всём проекте? delphi 7.

Удаление строчек - Visual Basic
Будьте добры, помогите новичку! Надо написать макрос, чтобы не листе удалялись строчки, в которыхь написано &quot;Всего&quot; и...

МАссив строчек - C#
Обььявила массив строчек public string sendData; Далее на кнопке хочу заполнить этот массив содержимым тексбоксов ...


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

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

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