Сформировать вектор из двух исходных - C (СИ)
Формулировка задачи:
Помогите пожалуйста разобраться в данной задаче:
Даны три вектора A, B и C размерности 10. Элементами вектора А являются имена, вектора B отчества, вектора C фамилии некоторых людей. Сформировать вектор Д, элементами которого являются имя, отчество и фамилия, выбранные с соответствующих векторов и начинающиеся на одну и туже букву (какие-то элементу могут не попасть в вектор Д). Реализовать, используя указатели.
...и надо разобрать именно в языке Си!Решение задачи: «Сформировать вектор из двух исходных»
textual
Листинг программы
#include <stdio.h>
#define FNAMESMAX 10
#define MNAMESMAX FNAMESMAX
#define LNAMESMAX FNAMESMAX
#define FIOMAX 3
void print_vector(const char *v[], size_t nobj);
const char *search_value(const char *v[], int ch, size_t nobj);
int main(void)
{
const char *fnames[FNAMESMAX] = {
"a: first", "def", "abc", "def", "abc",
"abc", "def", "abc", "def", "abc"
};
const char *mnames[MNAMESMAX] = {
"ghi", "jkl", "ghi", "jkl", "ghi",
"ghi", "jkl", "ghi", "jkl", "a: middle"
};
const char *lnames[LNAMESMAX] = {
"mno", "pqr", "mno", "pqr", "mno",
"mno", "pqr", "mno", "pqr", "a: last"
};
const char *fio[FIOMAX] = { NULL };
const char *res;
print_vector(fnames, 10);
print_vector(mnames, 10);
print_vector(lnames, 10);
printf("Search:\n");
res = search_value(fnames, 'a', 10);
if (res != NULL)
fio[0] = res;
res = search_value(mnames, 'a', 10);
if (res != NULL)
fio[1] = res;
res = search_value(lnames, 'a', 10);
if (res != NULL)
fio[2] = res;
print_vector(fio, 3);
return 0;
}
void print_vector(const char *v[], size_t nobj)
{
size_t i;
for (i = 0; i < nobj; v++, i++)
printf("[%s]%s", *v, (i + 1 < nobj ? ", ": "\n"));
}
const char *search_value(const char *v[], int ch, size_t nobj)
{
size_t i;
for (i = 0; i < nobj; v++, i++)
if (**v == ch)
return *v;
return NULL;
}