Сформировать вектор из двух исходных - 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д