Сформировать вектор из двух исходных - 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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы