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

массив строк - C++

Восстановить пароль Регистрация
 
Elena)))
 Аватар для Elena)))
3 / 3 / 1
Регистрация: 11.10.2011
Сообщений: 48
20.02.2012, 22:16     массив строк #1
Здравствуйте! Помогите, пожалуйста, написать две функции... одна из которых выводит строки, в которых есть нечетные цифры, а другая удаляет из этих строк нечетные числа

их нужно вставить сюда:
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
#include<iostream>
using namespace std;
 
const int max_kol_strok=10, max_kol_stolb=500;
 
int main()
{
 
char ns[max_kol_strok][max_kol_stolb];
 
int kol_strok;
do
{
cout<<"Vvedite kolichestvo strok ne bolee "<<max_kol_strok<<": ";
cin>>kol_strok;
if(kol_strok<0||kol_strok>max_kol_strok) 
cout<<"Error!"<<endl;
}
while(!(kol_strok>0 && kol_strok<=max_kol_strok));
 
for(int i=0; i<kol_strok; i++)
    { cout << "Vvedite " << i+1 << " stroku: ";
      cin >> ns[i]; };
          
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2012, 22:16     массив строк
Посмотрите здесь:

C++ Ввод нескольких строк или массив строк
Массив строк как массив указателей на массивы чаров C++
Сформировать массив строк. Удалить из него одинаковые строки. Сформировать массив строк. Удалить из него К последних строк C++
Используя функцию копирования строк, организуйте конкатенацію и копирование строк в четвертый массив, содержащий полные имена C++
Запросить название учебного заведения, специальность и номер группы. записав их в массив из 3 строк. Подсчитать длины каждой строк C++
C++ Задано массив строк произвольной длины. Отформатировать данный массив по ширине поля.
C++ Добавление неодинаковых строк в массив строк
C++ Вводится массив строк текста с неизвестным заранее количеством строк

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
11.04.2012, 20:35     массив строк #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
#include <iostream>
#include <cctype>
#include <cstring>
using namespace std;
 
const int max_kol_strok = 10, max_kol_stolb = 500;
 
// ф-ция поиска и печати строк
void find(char ns[max_kol_strok][max_kol_stolb])
{
    cout << "\nStrings with odd numbers:\n";
    for(int i = 0; i < max_kol_strok; ++i)
    {
        int len = strlen(ns[i]);
        for(int j = 0; j <= len; ++j)
        {
            // проверяем, является ли символ числом, и является ли оно нечётным
            if(isdigit(ns[i][j]) && (ns[i][j] - '0') % 2)
            {
                cout << ns[i] << "\n";
                break;
            }
        }
    }
}
 
// ф-ция удаления символов
void remove(char ns[max_kol_strok][max_kol_stolb])
{
    for(int i = 0; i < max_kol_strok; ++i)
    {
        int len = strlen(ns[i]);
        for(int j = 0; j <= len; ++j)
        {
            if(isdigit(ns[i][j]) && (ns[i][j] - '0') % 2)
            {
                // сдвиг элементов в строке
                for(int k = j; k < len; ++k)
                {
                    ns[i][k] = ns[i][k + 1];
                } 
                --j;
            }
        }
    }
}
 
// функция печати всех строк
void print(char ns[max_kol_strok][max_kol_stolb], int kol_strok)
{
    for(int i = 0; i < kol_strok; ++i)
    {
        cout << ns[i] << "\n";
    }
}
 
int main()
{
 
    char ns[max_kol_strok][max_kol_stolb];
 
    int kol_strok;
    do
    {
        cout<<"Vvedite kolichestvo strok ne bolee "<<max_kol_strok<<": ";
        cin>>kol_strok;
        if(kol_strok<0||kol_strok>max_kol_strok) 
        cout<<"Error!"<<endl;
    }
    while(!(kol_strok>0 && kol_strok<=max_kol_strok));
 
    for(int i=0; i<kol_strok; i++)
    { 
        cout << "Vvedite " << i+1 << " stroku: ";
        cin >> ns[i]; 
    };
      
    find(ns); // ищем и печатаем строки с нечётными символами
    remove(ns); // удаляем нечётные символы из строк
    
    cout << "\nResult:\n";
    print(ns, kol_strok); // напечатаем результаты - для проверки
          
    return 0;
}
Громоздко малость вышло, может будут варианты лучше?
Elena)))
 Аватар для Elena)))
3 / 3 / 1
Регистрация: 11.10.2011
Сообщений: 48
11.04.2012, 20:59  [ТС]     массив строк #3
Большое спасибо
А я вот так сделала...
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
#include<iostream>
using namespace std;
const int max_kol_strok=10, max_kol_stolb=10;
 
void str_s_nech_ciframi(char* stroka)
{
    int j=0;
    int s=0;
    while(stroka[j]!='\0') 
    {
        if(stroka[j]=='1' ||stroka[j]=='3'||stroka[j]=='5'|| stroka[j]=='7'|| stroka[j]=='9') s++;
        j++;
    }
    if(s>0) cout<<stroka<<endl;
}
 
 
void squeeze(char s1[], const char s2[])
{
int i, j, k;
for (i=0, j=0; s1[i]!='\0'; ++i)
    {
      for (k=0; s2[k]!='\0' && s1[i]!=s2[k]; ++k);
              if (s1[i]!=s2[k]) s1[j++]=s1[i];
    }
s1[j]='\0';
}
 
 
int main()
{
char a[max_kol_strok][max_kol_stolb];
char s2[]="13579";
int kol_strok;
do
{
cout<<"Vvedite kolichestvo strok ne bolee "<<max_kol_strok<<": ";
cin>>kol_strok;
if(kol_strok<0||kol_strok>max_kol_strok) cout<<"Error!"<<endl;
}
while(!(kol_strok>0 && kol_strok<=max_kol_strok));
 
for(int i=0; i<kol_strok; i++)
    { cout << "Vvedite " << i+1 << " stroku: ";
      cin >> a[i]; 
    }
      cout<<"________________________________"<<endl;
      cout<<"Vyvod strok c nechetnumi ciframi: "<<endl;
      for(int i=0; i<kol_strok; i++) 
      str_s_nech_ciframi(a[i]);
      cout<<"________________________________"<<endl;
      cout<<"Vyvod strok posle udaleniya necetnyh cifr: "<<endl;
      for(int i=0; i<kol_strok; i++) 
      { 
      squeeze(a[i], s2);
      cout<<a[i]<<endl;
      } 
return 0;
}
Yandex
Объявления
11.04.2012, 20:59     массив строк
Ответ Создать тему
Опции темы

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