Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
18 / 18 / 0
Регистрация: 21.09.2012
Сообщений: 86

Переменная char и названия массивов

10.01.2013, 16:33. Показов 1217. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Простите, если глупый вопрос,
у меня есть десять массивов и функция поиска элемента в массиве.
Чтобы десять раз не вызывать ее для каждого массива,
можно ли в цикле от 0 до 9 переменной типа char придавать значение от a до j (так называются эти 10 массивов),
а потом как-то вызывать в цикле ф-цию поиска, передавая имя массива с помощью этой переменной,
или это невозможно в принципе?


Спасибо заранее.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.01.2013, 16:33
Ответы с готовыми решениями:

В программе имеется следующий фрагмент: const char a='*'; char ch; как объявится указатель-переменная
В программе имеется следующий фрагмент: const char a='*'; char ch; как объявляется указатель-переменная на константу:

Строки: почему компилятор пишет , что переменная типа char несовместима с const char?
char pass; int password( int d) { int m; char p; cout << "Введите пароль для доступа к информации:"; cin >> p; ...

Почему у массивов типа char может быть утечка памяти, а у указателей char с выделенной памятью - нет?
Тут будет утечка памяти: #include<iostream> using namespace std; int main() { char name; cin >> name; cout <<...

6
40 / 40 / 32
Регистрация: 24.11.2012
Сообщений: 200
10.01.2013, 16:38
может ч/з двумерный массив типа "название массива"-"указатель на начало массива(имя массива является указателем на первый элемент)"?
1
18 / 18 / 0
Регистрация: 21.09.2012
Сообщений: 86
10.01.2013, 16:44  [ТС]
Да, но там в одном массиве напр. 1 элемент, а в другом 26. Вот исх. текст.
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
#include <iostream>
#include <windows.h>
 
using namespace std;
 
 
 
 
 
int seek (int*,int,int);
char *rus(char *);
 
 
int main () 
{
    int n,k=0,t=0;
    cout<<rus("Ââåäèòå íîìåð äîáàâêè: E");
    cin>>n;
    cout<<endl;
    int ochop[4]={123,510,513,527};
    int op[28]={102,110,120,124,127,129,155,180,201,220,222,223,224,228,233,242,400,401,402,403,404,405,501,502,503,620,636,637};
    int canc[19]={131,142,153,210,212,213,214,215,216,219,230,240,249,280,281,282,283,310,954};
    int rzh[11]={338,339,340,341,343,450,461,462,463,465,466};
    int kozh[11]={151,160,231,232,239,311,312,320,907,951,1105};
    int kish[11]={154,626,627,628,629,630,631,632,633,634,635};
    int dav[3]={154,250,252};
    int det[1]={270};
    int zapr[11]={103,105,111,121,123,125,126,130,152,211,952};
    int podozr[7]={104,122,141,171,173,241,477};
    k=seek (ochop,4,n);
    if (k==1) 
    {cout<<rus("Ýòà äîáàâêà îòíîñèòñÿ ê êàòåãîðèè Î×ÅÍÜ ÎÏÀÑÍÛÕ")<<endl;
    t++;}
    k=seek (op,28,n);
    if (k==1) 
    {cout<<rus("Ýòà äîáàâêà îòíîñèòñÿ ê êàòåãîðèè ÎÏÀÑÍÛÕ")<<endl;
    t++;}
    k=seek (canc,19,n);
    if (k==1) 
    {cout<<rus("Ýòà äîáàâêà îòíîñèòñÿ ê êàòåãîðèè ÊÀÍÖÅÐÎÃÅÍÍÛÕ")<<endl;
    t++;}
    k=seek (rzh,11,n);
    if (k==1) 
    {cout<<rus("Ýòà äîáàâêà îòíîñèòñÿ ê êàòåãîðèè ÂÛÇÛÂÀÞÙÈÕ ÐÀÑÑÒÐÎÉÑÒÂÎ ÆÅËÓÄÊÀ")<<endl;
    t++;}
    k=seek (kozh,11,n);
    if (k==1) 
    {cout<<rus("Ýòà äîáàâêà îòíîñèòñÿ ê êàòåãîðèè ÂÛÇÛÂÀÞÙÈÕ ÊÎÆÍÛÅ ÇÀÁÎËÅÂÀÍÈß")<<endl;
    t++;}
    k=seek (kish,11,n);
    if (k==1) 
    {cout<<rus("Ýòà äîáàâêà îòíîñèòñÿ ê êàòåãîðèè ÂÛÇÛÂÀÞÙÈÕ ÐÀÑÑÒÐÎÉÑÒÂÎ ÊÈØÅ×ÍÈÊÀ")<<endl;
    t++;}
    k=seek (dav,3,n);
    if (k==1) 
    {cout<<rus("Ýòà äîáàâêà îòíîñèòñÿ ê êàòåãîðèè ÂÛÇÛÂÀÞÙÈÕ ÏÎÂÛØÅÍÈÅ ÀÄ")<<endl;
    t++;}
    k=seek (det,1,n);
    if (k==1) 
    {cout<<rus("Ýòà äîáàâêà îòíîñèòñÿ ê êàòåãîðèè ÎÏÀÑÍÛÕ ÄËß ÄÅÒÅÉ")<<endl;
    t++;}
    k=seek (zapr,11,n);
    if (k==1) 
    {cout<<rus("Ýòà äîáàâêà îòíîñèòñÿ ê êàòåãîðèè ÇÀÏÐÅÙÅÍÍÛÕ")<<endl;
    t++;}
    k=seek (podozr,7,n);
    if (k==1) 
    {cout<<rus("Ýòà äîáàâêà îòíîñèòñÿ ê êàòåãîðèè ÏÎÄÎÇÐÈÒÅËÜÍÛÕ")<<endl;
    t++;}
    
 
    if (t==0) cout<<rus("Ýòà äîáàâêà íå âõîäèò íè â îäíó èç êàòåãîðèé, ñêîðåå âñåãî, îíà áåçîïàñíà äëÿ Âàøåãî çäîðîâüÿ")<<endl;
    
        
        
        system("pause");
    return 0;
}
 
char *rus(char *text)
{
   static char buf[1024];
   CharToOem(text, buf);
   return buf;
}
 
int seek (int* mas,int raz,int n)
{
    int k=0;
    for (int i=0;i<raz;i++)
    if (mas[i]==n) k=1; 
    return k;
}
(знаю, что поиск плохо написан)

Но всё-таки вот эта идея с a-j в пр-пе неосуществима, да?

Добавлено через 3 минуты
Или я Вас неправильно понял?
0
40 / 40 / 32
Регистрация: 24.11.2012
Сообщений: 200
10.01.2013, 16:50
можно в том-же массиве хранить и размер целевого массива(3-е измерение) или сделать имя массива в массиве указателей на массивы в виде строки "размер массива—какой-нибудь разделитель или без него—имя массива" и для поиска имени целевого массива просматривать только последний символ строки или часть строки после разделителя(если имя массива вдруг потребуется длиной >1 символа). извращение еще то. или можно размер массива хранить в первом нулевом элементе самого целевого массива
1
1 / 1 / 1
Регистрация: 10.01.2013
Сообщений: 18
10.01.2013, 16:52
А можно сделать список массивов, и циклом пройтись по нему
0
18 / 18 / 0
Регистрация: 21.09.2012
Сообщений: 86
10.01.2013, 17:11  [ТС]
Цитата Сообщение от Agent Smith Посмотреть сообщение
для поиска имени целевого массива просматривать только последний символ строки или часть строки после разделителя(если имя массива вдруг потребуется длиной >1 символа)
спасибо
остальное вроде понял, а это не очень: что делать когда найдёшь это имя, как его передавать в функцию - это же просто символ(ы), а не имя само (переменная-указатель)? (т.е. возвращаемся к исходному вопросу кажется)

Добавлено через 37 секунд
Цитата Сообщение от FlaYnoSt Посмотреть сообщение
А можно сделать список массивов, и циклом пройтись по нему
хорошая идея, спасибо
0
 Аватар для FreeMinder
36 / 36 / 4
Регистрация: 29.08.2012
Сообщений: 59
10.01.2013, 18:02
Бред, но как вариант
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
#include <iostream>
#include <windows.h>
 
using namespace std;
 
 
 struct addition
 {   
     int* nums;
     int size;
 };
 
 
bool seek (int*,int,int);
char *rus(char *);
 
 
int main () 
{
    int n=0;
    bool flag = false;
 
    cout<<rus("Введите номер добавки E: ");
    cin>>n;
    cout<<endl;     
 
    int ochop   [4]     =   {123,510,513,527};
    int op      [28]    =   {102,110,120,124,127,129,155,180,201,220,222,223,224,228,233,242,400,401,402,403,404,405,501,502,503,620,636,637};
    int canc    [19]    =   {131,142,153,210,212,213,214,215,216,219,230,240,249,280,281,282,283,310,954};
    int rzh     [11]    =   {338,339,340,341,343,450,461,462,463,465,466};
    int kozh    [11]    =   {151,160,231,232,239,311,312,320,907,951,1105};
    int kish    [11]    =   {154,626,627,628,629,630,631,632,633,634,635};
    int dav     [3]     =   {154,250,252};
    int det     [1]     =   {270};
    int zapr    [11]    =   {103,105,111,121,123,125,126,130,152,211,952};
    int podozr  [7]     =   {104,122,141,171,173,241,477};
 
    addition* add = new addition[10];
 
    add[0].nums = ochop;    add[0].size = 4;
    add[1].nums = op;       add[1].size = 28;
    add[2].nums = canc;     add[2].size = 19;
    add[3].nums = rzh;      add[3].size = 11;
    add[4].nums = kozh;     add[4].size = 11;
    add[5].nums = kish;     add[5].size = 11;
    add[6].nums = dav;      add[6].size = 3;
    add[7].nums = det;      add[7].size = 1;
    add[8].nums = zapr;     add[8].size = 11;
    add[9].nums = podozr;   add[9].size = 7;
 
    for (int i = 0; i < 10; i++)
    {
        if( seek(add[i].nums,add[i].size,n) )
        {
            flag = true;
            switch(i)
            {
                case 0: cout<<rus("Эта добавка относится к категории ОЧЕНЬ ОПАСНЫХ")                   <<endl;     break;
                case 1: cout<<rus("Эта добавка относится к категории ОПАСНЫХ")                          <<endl;     break;
                case 2: cout<<rus("Эта добавка относится к категории КАНЦЕРОГЕННЫХ")                  <<endl;     break;
                case 3: cout<<rus("Эта добавка относится к категории ВЫЗЫВАЮЩИХ РАССТРОЙСТВО ЖЕЛУДКА")    <<endl;     break;
                case 4: cout<<rus("Эта добавка относится к категории ВЫЗЫВАЮЩИХ КОЖНЫЕ ЗАБОЛЕВАНИЯ")    <<endl;     break;
                case 5: cout<<rus("Эта добавка относится к категории ВЫЗЫВАЮЩИХ РАССТРОЙСТВО КИШЕЧНИКА")<<endl;     break;
                case 6: cout<<rus("Эта добавка относится к категории ВЫЗЫВАЮЩИХ ПОВЫШЕНИЕ АД")            <<endl;     break;
                case 7: cout<<rus("Эта добавка относится к категории ОПАСНЫХ ДЛЯ ДЕТЕЙ")                <<endl;     break;
                case 8: cout<<rus("Эта добавка относится к категории ЗАПРЕЩЕННЫХ")                      <<endl;     break;
                case 9: cout<<rus("Эта добавка относится к категории ПОДОЗРИТЕЛЬНЫХ")                    <<endl;     break;
            }
        }
    }
    if (!flag) 
        cout<<rus("Эта добавка не входит ни в одну из категорий, скорее всего, она безопасна для Вашего здоровья")<<endl;
    system("pause >> void");
    delete[] add;
    return 0;
}
 
char *rus(char *text)
{
   static char buf[1024];
   CharToOemA(text, buf);
   return buf;
}
 
bool seek (int* mas,int raz,int n)
{    
    for (int i=0; i < raz;i++)
        if(mas[i]==n) 
            return true; 
    return false;
}
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.01.2013, 18:02
Помогаю со студенческими работами здесь

Предположим, что переменная типа CHAR занимает 1 байт, переменная типа INTEGER занимает два байта
Предположим, что переменная типа CHAR занимает 1 байт, переменная типа INTEGER занимает два байта, а переменная типа REAL занимает 4 байта....

Переменная char
#include&lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; int main () { setlocale(LC_CTYPE,&quot;Russian&quot;); char...

Переменная типа char
Учусь программированию на C++. Вот, столкнулся с проблемой. Пытался найти ответ в интернете, но об этом нигде не сказано. Дело в том, что я...

Переменная char и инструкции if
Добрый день,начал изучать c++ и в книге есть следующее задание: Нужно сделать переменную char с именем &quot;friend_sex&quot; и...

переменная типа Char
как считать с edit данные в переменную типа Char, знаю как в integer, real и так далее, а в чар впервые столкнулся...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru