С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.90/10: Рейтинг темы: голосов - 10, средняя оценка - 4.90
zoja1739
0 / 0 / 0
Регистрация: 26.09.2009
Сообщений: 23
1

Задача с символом строк

26.09.2009, 00:31. Просмотров 1855. Ответов 29
Метки нет (Все метки)

Помогите решить: сколько в символьной строке слов, имеющие в середине слова средний символ(символ который находится в середине слова)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2009, 00:31
Ответы с готовыми решениями:

Описать функцию для подсчета числа строк, начинающихся и заканчива- ющихся одним и тем же символом
Описать функцию для подсчета числа строк, начинающихся и заканчива- ющихся...

Задача на сортировку строк
Задача: в 10 строковых переменных занесите 5 рандомных символов, а потом...

задача на С++.(обработка строк)
Число записано в виде строки.Вывести самую большую цифру числа.Желательно...

Задача на обработку строк
Дана строка символов. Преобразовать строку, удалив из нее все символы, не...

задача на обработку символьных строк
2. Разработать программу подсчёта статистики массива символьных строки в...

29
valeriikozlov
Эксперт С++
4687 / 2513 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
26.09.2009, 07:30 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
#include <Windows.h>
#include <iostream.h>
#include <iomanip>
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char *str="слово строка олово";// начальная строка
    char c;
    cout<<"Введите символ"<<endl;
    cin>>c;
    int kol_sl=0, j, temp=0;    
    for(j=0; j<=strlen(str); j++)
    {
        if(str[j]==' ' || str[j]=='\0')
        {
            if((j-temp)%2==1 && str[temp+(j-temp)/2]==c)
                kol_sl++;
            temp=j+1;
        }
        
    }
    cout<<"Количество слов с символом '"<<c<<"' в середине: "<<kol_sl<<endl;
    system("pause");
    return 0;
}
Или может быть Вам нужно вывести количество слов у которых есть средний символ (т.е. просто вывести количество слов у которых количество букв нечетное)?
0
zoja1739
0 / 0 / 0
Регистрация: 26.09.2009
Сообщений: 23
26.09.2009, 19:11  [ТС] 3
Да, нужно вывести количество слов у которых есть средний символ (т.е. просто вывести количество слов у которых количество букв нечетное),за ранее спасибо ,если можете решите.
0
valeriikozlov
Эксперт С++
4687 / 2513 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
26.09.2009, 19:30 4
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
#include <Windows.h>
#include <iostream.h>
#include <iomanip>
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char *str="слово строка олово";// начальная строка
    int kol_sl=0, j, temp=0;        
    for(j=0; j<=strlen(str); j++)
    {
        if(str[j]==' ' || str[j]=='\0')
        {
            if((j-temp)%2==1)
                kol_sl++;
                temp=j+1;
        }
                
    }
    cout<<"Количество слов со средним символом: "<<kol_sl<<endl;
    system("pause");
    return 0;
}
1
zoja1739
0 / 0 / 0
Регистрация: 26.09.2009
Сообщений: 23
26.09.2009, 20:08  [ТС] 5
кажется то ,что нужно ,большое вам спасибо, выручили.
0
zoja1739
0 / 0 / 0
Регистрация: 26.09.2009
Сообщений: 23
27.09.2009, 15:22  [ТС] 6
А как можно переделать ,чтоб в запущенной проге набирать слова и она выщитывала сразу сколько слов с средним символом (т. е. нечетные слова)
0
valeriikozlov
Эксперт С++
4687 / 2513 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
27.09.2009, 19:31 7
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.>
#include <conio.h>
#include <math.h>
#include <Windows.h>
#include <string>
#include <process.h>
using namespace std ;
int main ()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    cout<<"Введите строку\n";
    string s1;
    int a, j, kol_sl=0, temp=0;
    getline(cin,s1, '\n'); 
    a=s1.length(); 
    for(j=0;j<=a; j++)
    {
        if(s1[j]==' ' || s1[j]=='\0' )
        {
            if((j-temp)%2==1)
                kol_sl++;
            temp=j+1;
        }
                
    }
    cout<<"Количество слов со средним символом: "<<kol_sl<<endl;
 getch ();
 return 0; 
}
1
zoja1739
0 / 0 / 0
Регистрация: 26.09.2009
Сообщений: 23
28.09.2009, 01:19  [ТС] 8
Большое вам спасибо !!!вы очень мне помогли.
0
zoja1739
0 / 0 / 0
Регистрация: 26.09.2009
Сообщений: 23
29.09.2009, 11:28  [ТС] 9
В программировании ,я пока чайник ,преподаватель сказал ,чтоб не со string делали ,а типа такого кода ,мне помогли написать, но программа выдает много ошибо,к немогли б мне помоч помоему вышеуказанному заданию.
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
#include<iostream.h>
#include<stdio.h>
#include<string.h>
void main()
 
     char*zod_mas[10]
     char*zodis=strtok(san,sak);
     zod_mas[0]=zodis
     int i=1
     while(zodis!=NULL)
     {zodis=strtok(NULL,SEP);
     i++
     zod_mas[i]=zodis;
     }
     char*zod_max=zod_max
     
     int n_zod_max=strlen(zod_max);
     char_chn=zod_max[n]
     char_chn=zod_max[n_zod_max/2]
     char*zod_max[10];
     
     int nx=0; int nzod;
     
     for(int j=0;j<i;j++)
    {nzod=strlen(zod_max[j];
     for(int k=0;k<nzod;k++)
     {if(zod_max[j][k]=chn) 
      if(zod_max[j][k]=chn) break;
 
      }
      }
0
R0mm
Псевдо программист
192 / 113 / 37
Регистрация: 19.09.2009
Сообщений: 303
29.09.2009, 11:52 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
#include "stdafx.h"
#include <iostream.>
using namespace std ;
int main ()
{
    setlocale(LC_ALL, "Russian");
    cout<<"Введите строку\n";
    char s1[80];
    int a, j, kol_sl=0, temp=0;
    cin.getline(s1, 80); 
    a=strlen(s1); 
    for(j=0;j<=a; j++)
    {
        if(s1[j]==' ' || s1[j]=='\0' )
        {
            if((j-temp)%2==1)
                kol_sl++;
            temp=j+1;
        }
                
    }
    cout<<"Количество слов со средним символом: "<<kol_sl<<endl;
    system("pause");
    return 0; 
}
1
zoja1739
0 / 0 / 0
Регистрация: 26.09.2009
Сообщений: 23
09.10.2009, 15:57  [ТС] 11
Большое спасибо за программу!!! А как зделать ,чтоб при запуске проги ввод данных и результат выводился в текстовом файле? Я вводила FILE *out = fopen( ".txt", "a" ); но результата не получала.
0
TanT
эволюционирую потихоньку
467 / 465 / 91
Регистрация: 30.06.2009
Сообщений: 1,399
09.10.2009, 15:59 12
Цитата Сообщение от zoja1739 Посмотреть сообщение
Большое спасибо за программу!!! А как зделать ,чтоб при запуске проги ввод данных и результат выводился в текстовом файле? Я вводила FILE *out = fopen( ".txt", "a" ); но результата не получала.
C
1
FILE *out = fopen( "FILE_NAME.txt", "a" );
0
zoja1739
0 / 0 / 0
Регистрация: 26.09.2009
Сообщений: 23
09.10.2009, 16:38  [ТС] 13
Ничего у меня невыходит. А немогли б вы написать полностью код ,а то я пока еще чайник в етом.
0
TanT
эволюционирую потихоньку
467 / 465 / 91
Регистрация: 30.06.2009
Сообщений: 1,399
09.10.2009, 16:54 14
я не совсем в теме, в общем программа считавает строчку из файла input.txt и записывает результат в output.txt. причём результат записывается для каждой строчки
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
//#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std ;
int main ()
{
    char *File="input.txt";                  // исходный фаил 
    char *File_out="output.txt";     // фаил результата 
    setlocale(LC_ALL, "Russian");
    
    ofstream f_out; f_out.open(File_out);
    ifstream f(File);
    
 
    if (!f.is_open())   // проверка наличия файла с данными о клиентах
    { f_out<<"ERROR: not file:"<<File<<endl; 
    }
    else
    {
        char s1[80];
        int a, j, kol_sl=0, temp=0;
        while(!f.eof())
        {
            kol_sl=0; temp=0;
            f.getline(s1, 80); 
            a=strlen(s1); 
            for(j=0;j<=a; j++)
            {
                if(s1[j]==' ' || s1[j]=='\0' )
                {
                    if((j-temp)%2==1)
                        kol_sl++;
                    temp=j+1;
                }
            }
            f_out<<"Количество слов со средним символом: "<<kol_sl<<endl;
        }
    }
 
    f.close();
    //system("pause");
    return 0; 
}
0
zoja1739
0 / 0 / 0
Регистрация: 26.09.2009
Сообщений: 23
09.10.2009, 18:08  [ТС] 15
у меня прога DEV++ выводит ERROR: not file:input.txt
0
TanT
эволюционирую потихоньку
467 / 465 / 91
Регистрация: 30.06.2009
Сообщений: 1,399
09.10.2009, 18:11 16
Цитата Сообщение от zoja1739 Посмотреть сообщение
у меня прога DEV++ выводит ERROR: not file:input.txt
всё правильно, ты его создай в тойже папке где компилишь исходник или путь пропиши и будет тебе счастье.
0
zoja1739
0 / 0 / 0
Регистрация: 26.09.2009
Сообщений: 23
09.10.2009, 19:58  [ТС] 17
или я полный чайник она у меня вообще незапускается
0
TanT
эволюционирую потихоньку
467 / 465 / 91
Регистрация: 30.06.2009
Сообщений: 1,399
09.10.2009, 20:08 18
в папку с исходником помести фаил input.txt (со тестовой строкой). скомпили исходник (окно появиться и исчезнет). в папке с фаилом инпут и исходником появиться ещё один output.txt с результатом.
1
zoja1739
0 / 0 / 0
Регистрация: 26.09.2009
Сообщений: 23
10.10.2009, 18:16  [ТС] 19
А проще код нельзя написать ,чтоб прога работала и выводила в файле результат сразу ,мне просто еще ето очень сложно.
0
valeriikozlov
Эксперт С++
4687 / 2513 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
10.10.2009, 19:44 20
zoja1739,
TanT все правильно пишет. Я наверное понял в чем у Вас сложности. Сделайте тогда так:
1. Строки 7 и 8 в коде TanT
Цитата Сообщение от TanT Посмотреть сообщение
char *File="input.txt"; // исходный фаил
char *File_out="output.txt"; // фаил результата
замените на:
C++
1
2
        char *File="c:\\input.txt";                                  // èñõîäГ*ûé ГґГ*ГЁГ« 
        char *File_out="c:\\output.txt";     // ГґГ*ГЁГ« ðåçóëüòГ*ГІГ*
2. Войдите на своем компьютере в папку "локальный диск С:". На пустом месте в этой папке нажмите правую кнопку мыши, выберите подпункт "создать", затем выберите подпункт "текстовый документ" и нажмите левую кнопку мыши. У Вас будет создан на диске "С:" текстовый файл "Текстовый документ.txt". Этот файл надо переименовать в "input.txt". Затем открываете этот файл и пишите в нем исходные слова.
3. Запускаете программу. После закрытия программы на диске "С:" у Вас появится файл "output.txt". Открываете его и там будут результаты.
0
10.10.2009, 19:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2009, 19:44

Задача на массив символьных строк.
Возможно я не первый кто просит помочь в данной задачи, но все же повторюсь.:...

Задача на упорядочение строк матрицы
Дана матрица размера M × N. Упорядочить ее строки так, чтобы их первые элементы...

Реализовать парсер строк (Задача A. Стартап)
Задача A. Стартап Имя входного файла: startup.in Имя выходного файла:...


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

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

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