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

Выдать строки, в которых есть слова с тремя буквами "у" - C++

Восстановить пароль Регистрация
 
rammen33
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 11
11.12.2012, 23:26     Выдать строки, в которых есть слова с тремя буквами "у" #1
Задача: Выдать строки, в которых есть слова с тремя буквами "у".
Уважаемые форумчане и прогеры высокого левела, помогите!
Я сам не программист, но много задачек уже, в т.ч. и прикладных делал. Но вот беда-со строками не бум-бум. Помогите!
Код нужен на С++ (на VS 2005 пишу)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2012, 23:26     Выдать строки, в которых есть слова с тремя буквами "у"
Посмотрите здесь:

Найти все и вывести все слова в которых есть буква "к" C++
C++ Вывести все слова, в которых есть буква "a"
Вывести текст файла, заменив цифры от 0 до 9 на слова "ноль", "один"."девять", начиная каждое предложение с новой строки C++
Строки (между одинаковыми буквами вставлять " - " (тире)) C++
C++ Заданный словарь слов. Найти в нем слова-палиндромы, то есть такие, которые одинаково читаются слева направо и наоборот, например, "АННА", "ШАЛАШ"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
11.12.2012, 23:26     Выдать строки, в которых есть слова с тремя буквами "у" #2
Считывание из файла идет?
rammen33
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 11
11.12.2012, 23:28  [ТС]     Выдать строки, в которых есть слова с тремя буквами "у" #3
Цитата Сообщение от MrGluck Посмотреть сообщение
Считывание из файла идет?
Если не сложно, то да!
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
11.12.2012, 23:34     Выдать строки, в которых есть слова с тремя буквами "у" #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
#include <fstream>
 
 
int main()
{
    std::ifstream ifs("input.txt");
    if (!ifs) return 1;
    std::string str;
    while (!ifs.eof() && std::getline(ifs, str)) // пока не конец файла считываем строку
        if (str.find("yyy") != std::string::npos)
            std::cout << str << std::endl;
}
rammen33
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 11
11.12.2012, 23:43  [ТС]     Выдать строки, в которых есть слова с тремя буквами "у" #5
system("pause"); не хватает)))
добавлю еще интерфейс для проверки и пр.
Но главное само тело!!!
ОГРОМНОЕ СПАСИБО!
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
12.12.2012, 00:26     Выдать строки, в которых есть слова с тремя буквами "у" #6
rammen33, system("pause") нужно только на Windows при использовании IDE, которая не удерживает консоль.
Проверка на существование файла есть
C++
1
if (!ifs) return 1;
rammen33
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 11
12.12.2012, 00:42  [ТС]     Выдать строки, в которых есть слова с тремя буквами "у" #7
Цитата Сообщение от MrGluck Посмотреть сообщение
rammen33, system("pause") нужно только на Windows при использовании IDE, которая не удерживает консоль.
Проверка на существование файла есть
C++
1
if (!ifs) return 1;
мне быстрее F5 нажать... поэтому пишу system("pause") чтоб застопорилось.
А заводил битый файл-меня тупо выкидывало. Поэтуму исправил немного
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
#include <fstream>
 /* Выдать строки, в которых есть слова с тремя буквами у */
 int main()
{   
    using namespace std;
    setlocale(LC_ALL,"rus");
    cout<<"Cтроки, в которых есть слова с тремя буквами у: "<<endl<<endl;
    std::ifstream ifs("input.txt");
    if(ifs == 0)
        {
                cout<<"   Не могу открыть файл! Или его не существует...\n\n\n ";system("pause");
              
        }
    if (!ifs) return 1;
    std::string str;
    while (!ifs.eof() && std::getline(ifs, str)) // пока не конец файла считываем строку
        if (str.find("ууу") != std::string::npos)
            std::cout << str << std::endl;
    cout<<endl;
    system("pause");
 }
Добавлено через 6 минут
о! еще тогда вопрос: вот кусок кода -
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void View(int *arr, int N );
void View(int *arr, int N )//  функция заполнения и вывода массива
        {      cout << " МАССИВ ----------------  "; cout<<endl;
            int i;
            srand((unsigned int) time(NULL));// генератор случ чисел 
            for (i=0; i<N; i++)
                {   *(arr+i)=rand()%100;
                    cout<<*(arr+i)<<" "; // вывод массива с обращением через указатели
                }
        }
void main()
{   
FILE *out;
out=fopen("OUTPUT.txt","w");
fprintf(out, View);
cout<<endl;
fclose(out);
Почему не получается саму функцию- ее результат, запихать в файл?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
12.12.2012, 00:50     Выдать строки, в которых есть слова с тремя буквами "у" #8
Во-первых, лишние проверки ни к чему:
C++
1
2
3
4
5
6
if(!ifs) // то же, что и if(ifs == 0)
{
    cout<<"   Не могу открыть файл! Или его не существует...\n\n\n ";
    system("pause");
    return 1;
}
Во-вторых, зачем мешать синтаксис С++ с поточным вводом/выводом на экран, тем более с STL наряду с С-ными указателями на файловую переменную? Используйте fstream.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main()
{
    const int N = 20;
    int arr[N];
    View(arr, N);   
    std::ifstream out;
    out.open("OUTPUT.txt");
    if (!out)
    {
        std::cerr << "No file\n";
        system("pause");
        return 1;
    }
    for (int i=0; i < N; i++)
        out << arr[N] << " "; // хотите - переделайте на указатели
    out.close();
}
В-третьих, по стандарту int main()
rammen33
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 11
12.12.2012, 01:05  [ТС]     Выдать строки, в которых есть слова с тремя буквами "у" #9
Цитата Сообщение от MrGluck Посмотреть сообщение
Во-первых, лишние проверки ни к чему:
C++
1
2
3
4
5
6
if(!ifs) // то же, что и if(ifs == 0)
{
    cout<<"   Не могу открыть файл! Или его не существует...\n\n\n ";
    system("pause");
    return 1;
}
Во-вторых, зачем мешать синтаксис С++ с поточным вводом/выводом на экран, тем более с STL наряду с С-ными указателями на файловую переменную? Используйте fstream.
C++
1
2
3
4
int main()
        out << arr[N] << " "; // хотите - переделайте на указатели
    out.close();
}
В-третьих, по стандарту int main()
Нет, вы меня не поняли!
Я имел ввиду отдельно работающую функцию вывести в файл - все что в консоли вывела- то и в файл, некий отчет.
У нас вообще в группе на Борланде пишут, ничего... я не смог, сел за Visual...
А потоковый вывод я и реализовывал:
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
void View (int *arr, int N) // функция поиска мин макс & вывод в файл
        {       
            FILE *out;
            out=fopen("OUTPUT.txt","w");
                int min=*arr; 
                int max=*arr;
                int k=0,l=0;
                for (int i=1; i<N; i++)
                {
                    if (min>*(arr+i))
                    {min=*(arr+i);k=i;}
                    if (*(arr+i)>max)
                    {max=*(arr+i);l=i;}
                }
            cout<<endl;
            cout<<endl;
            cout<<"элементы, расположенные между мин. " <<min<<" ["<<k
                <<"] и макс. "<<max<<" ["<<l<<"]элементами массива: "<<endl;
            int i;
if (l>k)  
{fprintf(out,"элементы, расположенные между мин и макс: \n ");
    for (i=k+1; i<l; i++)
        {cout<<*(arr+i)<<" ";  
    fprintf(out,"%3.2d",arr[i]);}}
else  
fprintf(out,"элементы, расположенные между мин и макс: \n ");
        for (i=l+1; i<k; i++)
                {cout<<*(arr+i)<<" ";
                fprintf(out,"%3.2d",arr[i]);}
cout<<endl<<endl;
fclose(out);
А хотел сделать отдельно, вызвать это же самое, но функцией, которая прописывается в файл. Не получилось, ругался конвертер int в *char.

И не ругайте меня за потоковый ввод/вывод - работает же! Так быстрее
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
12.12.2012, 01:08     Выдать строки, в которых есть слова с тремя буквами "у" #10
rammen33, начнем с того, что потоки подразумевают операторы << и >>, а то что вы делаете пошло из С. И вы хоть пробовали компилировать мой код? Там как раз результат в файл и записывается.
rammen33
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 11
12.12.2012, 01:15  [ТС]     Выдать строки, в которых есть слова с тремя буквами "у" #11
Цитата Сообщение от MrGluck Посмотреть сообщение
rammen33, начнем с того, что потоки подразумевают операторы << и >>, а то что вы делаете пошло из С. И вы хоть пробовали компилировать мой код? Там как раз результат в файл и записывается.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main()
{
    const int N = 20;
    int arr[N];
    View(arr, N);   
    std::ifstream out;
    out.open("OUTPUT.txt");
    if (!out)
    {
        std::cerr << "No file\n";
        system("pause");
        return 1;
    }
    for (int i=0; i < N; i++)
        out << arr[N] << " "; // хотите - переделайте на указатели
    out.close();
}
к СОЖАЛЕНИЮ выдало много ошибок, некогда разбираться...
Но вот вметсто arr[N] можно ли ФУНКЦИЮ вставить?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
12.12.2012, 01:19     Выдать строки, в которых есть слова с тремя буквами "у" #12
C++
1
out << arr[i] << " ";
опечатка.
Вы хотите, чтоб отдельная функция выводила в файл результат?
rammen33
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 11
12.12.2012, 01:24  [ТС]     Выдать строки, в которых есть слова с тремя буквами "у" #13
Цитата Сообщение от MrGluck Посмотреть сообщение
C++
1
out << arr[i] << " ";
опечатка.
Вы хотите, чтоб отдельная функция выводила в файл результат?
ВЫВОДИЛАСЬ, а функцию вывода я писал...
dederkay
 Аватар для dederkay
34 / 34 / 0
Регистрация: 08.12.2010
Сообщений: 161
12.12.2012, 01:27     Выдать строки, в которых есть слова с тремя буквами "у" #14
Цитата Сообщение от rammen33 Посмотреть сообщение
ВЫВОДИЛАСЬ, а функцию вывода я писал...
я надеюсь вы имеете в виду что выведеться результат работы(вероятно возвращаемое значение) ф - и? или же вы желаете выводить в файл листинг(что очень странно) ф -и? ибо слова выводить ФУНКЦИЮ как то неоднозначно звучат)
rammen33
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 11
12.12.2012, 01:30  [ТС]     Выдать строки, в которых есть слова с тремя буквами "у" #15
Цитата Сообщение от dederkay Посмотреть сообщение
я надеюсь вы имеете в виду что выведеться результат работы(вероятно возвращаемое значение) ф - и? или же вы желаете выводить в файл листинг(что очень странно) ф -и? ибо слова выводить ФУНКЦИЮ как то неоднозначно звучат)
Да да, вы правильно мыслите. Функцию вывода для вывода данных... Вообщем ладно, не будем заморачиваться и отвлекать вас по таким мелочам.
Спасибо еще раз!
А я наверно спать, мне на пару к 8:00, а времени у нас 3:30...
dederkay
 Аватар для dederkay
34 / 34 / 0
Регистрация: 08.12.2010
Сообщений: 161
12.12.2012, 01:37     Выдать строки, в которых есть слова с тремя буквами "у" #16
Цитата Сообщение от rammen33 Посмотреть сообщение
Функцию вывода для вывода данных...
Чесно, я вас так и не понял, думаю вы имели в виду что то вроде сего
C++
1
out << someFoo(arg);
Вам верно написали код для такого варианта, ежели вам нужен текст ф -и, ет всего лишь строка) котору не так уж и тежело получить, при особом старании)) хотя ИМХО звучит как то бредово.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2012, 01:40     Выдать строки, в которых есть слова с тремя буквами "у"
Еще ссылки по теме:

Определить длину каждого слова строки, и если она четная, то вставить в середину слова "aa", иначе "а" C++
Дана строка. На печать выдать слова, имеющие больше одной буквы "е" C++
Из слова "яблоко" путем склеек и вырезок его букв получить слова "блок" и "око" C++

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
12.12.2012, 01:40     Выдать строки, в которых есть слова с тремя буквами "у" #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
#include <iostream>
#include <fstream>
#include <ctime>
#include <cstdlib>
 
void View(int *arr, int N )//  функция заполнения и вывода массива
        {      std::cout << " МАССИВ ----------------  "; std::cout<<std::endl;
            int i;
            std::srand((unsigned int) time(NULL));// генератор случ чисел
            for (i=0; i<N; i++)
                {   *(arr+i)=rand()%100;
                    std::cout<<*(arr+i)<<" "; // вывод массива с обращением через указатели
                }
        }
 
int main()
{
    const int N = 20;
    int arr[N];
    View(arr, N);
    std::ofstream out;
    out.open("OUTPUT.txt");
    for (int i=0; i < N; i++)
        std::cout << arr[i] << " "; // хотите - переделайте на указатели
    out << "void View(int *arr, int N )//  функция заполнения и вывода массива\n"
        "{      cout << \" МАССИВ ----------------  \"; cout<<endl;\n"
        "    int i;\n"
        "    srand((unsigned int) time(NULL));// генератор случ чисел\n"
        "    for (i=0; i<N; i++)\n"
        "        {   *(arr+i)=rand()%100;\n"
        "            cout<<*(arr+i)<<\" \"; // вывод массива с обращением через указатели\n"
        "        }\n"
        "}";
    out.close();
}
Yandex
Объявления
12.12.2012, 01:40     Выдать строки, в которых есть слова с тремя буквами "у"
Ответ Создать тему
Опции темы

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