Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/12: Рейтинг темы: голосов - 12, средняя оценка - 4.50
lera8
634 / 217 / 63
Регистрация: 03.11.2009
Сообщений: 488
#1

Вставить после каждого знака пунктуации в символьном массиве знак табуляции

08.11.2009, 22:49. Просмотров 2075. Ответов 11
Метки нет (Все метки)

Помогите пожалуйста решить задачи на языке Си
1. Вставить после каждого знака пунктуации в символьном массиве знак табуляции.
2. Дан целочисленный массив, определить серии максимальной и минимальной длины и поменять их местами, если их несколько, то первые из них.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2009, 22:49
Ответы с готовыми решениями:

Дан массив строк. Написать функцию, которая после каждого знака пунктуации будет ставить пробел
Например, если после точки в строке нет пробела, то как его вставить туда?

В массиве вставить после каждого второго элемента минимальное непростое число
Задан массив Y(k) целых чисел. Если он упорядочен, оставить его без изменения. Если массив не...

В целочисленном массиве после каждого четного числа вставить максимальный элемент массива
В целочисленном массиве X(N) после каждого четного числа вставить максимальный элемент массива....

В целочисленном массиве после каждого четного числа вставить максимальный элемент массива
В целочисленном массиве X(N) после каждого четного числа вставить максимальный элемент массива....

В выражении вместо каждого знака вопрос записать знак одной из арифметических операций
Ребят, помогите решить.. У самого идей вообще нет.. Подозреваю, что рекурсией, но хз как) Буду рад...

11
insolent
827 / 345 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
09.11.2009, 02:13 #2
Цитата Сообщение от lera8 Посмотреть сообщение
Вставить после каждого знака пунктуации в символьном массиве знак табуляции.
Возможно как-то
так
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
/*
    Вставить после каждого знака пунктуации в символьном массиве знак табуляции.
*/
 
//#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
////////////////////////////////////////////////////////////////////
int main(int argc, char* argv[])
{
        char *ch = new char[80];
    string punct = ",-.:;";
        size_t found;
        cout << "Enter a string :>";
    cin.getline(ch,80);
    string str(ch,strlen(ch));
    found = str.find_first_of(punct);
    while (found != string::npos)
    {
        str.insert(found+1,"\t");
        found = str.find_first_of(punct,found+1);
    }
        strcpy(ch,str.c_str());
    cout << ch << endl;
    getchar();
    return 0;
}
1
lera8
634 / 217 / 63
Регистрация: 03.11.2009
Сообщений: 488
09.11.2009, 16:42  [ТС] #3
спасибо
0
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
09.11.2009, 16:53 #4
Цитата Сообщение от lera8 Посмотреть сообщение
определить серии максимальной и минимальной длины
не подскажете что это поподробнее, если можно то приведите пример
0
ISergey
Maniac
Эксперт С++
1408 / 919 / 148
Регистрация: 02.01.2009
Сообщений: 2,749
Записей в блоге: 1
09.11.2009, 16:54 #5
на языке Си
insolent, ваш код уж больно далек от Си.
0
Андрейка
422 / 226 / 87
Регистрация: 25.03.2009
Сообщений: 744
09.11.2009, 16:55 #6
valeriikozlov, это скорее всего подполседовательность одинаковых чисел максимальной длины
0
lera8
634 / 217 / 63
Регистрация: 03.11.2009
Сообщений: 488
09.11.2009, 16:57  [ТС] #7
Серия-это последовательность одинаковых элементов массива. Например, дан массив:1 1 3 2 2 2, где 2 2 2-это серия максимальной длины, а 3 - серия минимальной длины.
0
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
09.11.2009, 18:06 #8
Андрейка, я просто далек на самом деле от студенческих понятий (особенно от тех, которые не несут в себе "логического" понятия)
0
lamila
0 / 0 / 0
Регистрация: 10.11.2009
Сообщений: 3
10.11.2009, 01:48 #9
Доброй ночи всем
0
easybudda
Модератор
Эксперт CЭксперт С++
10051 / 5971 / 1491
Регистрация: 25.07.2009
Сообщений: 11,305
10.11.2009, 04:03 #10
Цитата Сообщение от lera8 Посмотреть сообщение
Вставить после каждого знака пунктуации в символьном массиве знак табуляции.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <ctype.h>
 
int main(){
    char array[] = "aaa,bbb.ccc;ddd";
    char *p;
    
    for ( p = array; *p; p++ ){
        putchar(*p);
        if ( ispunct(*p) )
            putchar('\t');
    }
    putchar('\n');
    return 0;
}
2
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
10.11.2009, 06:40 #11
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
#include <stdlib.h>
#include <time.h>
#define  SIZE_ARRAY 10
int main ()
{
        int A[SIZE_ARRAY], i, min_i, min_kol, max_i, max_kol=1, temp_i, temp_kol, temp;
        bool fl;
        srand (time(0));
        printf("Ishodn massiv:\n");
        for(i=0; i<SIZE_ARRAY; i++)
        { A[i]=rand()%5;
          printf(" %i",A[i]);
        }
        printf("\n");
        // ïîèñê Г¬Г*ГЄГ±
        for(i=0; i<SIZE_ARRAY-1; i++)
        {
            temp_kol=1;
            fl=false;
            while(A[i]==A[i+1])
            {
                temp_kol++;
                if(!fl)
                {
                    fl=true;
                    temp_i=i;
                }
                i++;
            }
            if(max_kol<temp_kol)
            {
                max_kol=temp_kol;
                max_i=temp_i;
            }
        }
        min_i=max_i;
        min_kol=max_kol;
        for(i=0; i<SIZE_ARRAY-1; i++)
        {
            temp_kol=1;
            fl=false;
            if(A[i]!=A[i+1])
            {
                min_kol=1;
                min_i=i;
                i=SIZE_ARRAY;
            }
            while(A[i]==A[i+1])
            {
                temp_kol++;
                if(!fl)
                {
                    fl=true;
                    temp_i=i;
                }
                i++;
            }
            if(min_kol>temp_kol)
            {
                min_kol=temp_kol;
                min_i=temp_i;
            }
        }
// ïåðåìåГ*Г* ìåñòГ*ìè
    if(min_i<max_i)
        for(i=0; i<max_kol; i++)
        {
            if(i<min_kol)
            {
            temp=A[min_i+i];
            A[min_i+i]=A[max_i+i];
            A[max_i+i]=temp;
            }
            else
            {
                temp=A[max_i+i];
                for(int j=max_i+i; j>min_i+i; j--)
                    A[j]=A[j-1];
                A[min_i+i]=temp;
            }
        }
    else
        for(i=0; i<max_kol; i++)
        {
            if(i<min_kol)
            {
            temp=A[min_i+i];
            A[min_i+i]=A[max_i+i];
            A[max_i+i]=temp;
            }
            else
            {
                temp=A[max_i+i];
                for(int j=max_i+i; j<min_i+min_kol-i; j++)
                    A[j]=A[j+1];
                A[min_i+min_kol-i]=temp;
            }
        }
        printf("Poluch massiv:\n");
        for(i=0; i<SIZE_ARRAY; i++)
           printf(" %i",A[i]);
        printf("\n");
 getchar();
 return 0;
}
2
lera8
634 / 217 / 63
Регистрация: 03.11.2009
Сообщений: 488
10.11.2009, 22:36  [ТС] #12
БОльшое всем спасибо за помощь!
0
10.11.2009, 22:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2009, 22:36

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

После каждого знака препинания (".", ",", ";") вставить в строку пробел, если там его нет
Выполните задания с использованием библиотечного класса string. Даны строка S. Необходимо после...

Вместо каждого пробела вставить в строку восклицательный знак
И вставить вместо каждого пробела восклицательный знак. Повторять до тех пор, пока не встретится...


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

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

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