Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 04.11.2010
Сообщений: 9
1

Сформировать вектор из двух исходных

04.11.2010, 19:01. Просмотров 1309. Ответов 10
Метки нет (Все метки)


Помогите пожалуйста разобраться в данной задаче:
Даны три вектора A, B и C размерности 10. Элементами вектора А являются имена, вектора B отчества, вектора C фамилии некоторых людей. Сформировать вектор Д, элементами которого являются имя, отчество и фамилия, выбранные с соответствующих векторов и начинающиеся на одну и туже букву (какие-то элементу могут не попасть в вектор Д). Реализовать, используя указатели.
...и надо разобрать именно в языке Си!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2010, 19:01
Ответы с готовыми решениями:

Сформировать массив из элементов двух исходных
Даны два произвольные одномерные массивы целых чисел М1 и М2 с одинаковым количеством элементов....

Сформировать упорядоченный массив из элементов двух исходных
Добрый день,форумчане! Помогите с задачей. Даны два упорядоченных файла с числами. Нужно их слить...

Сформировать третий массив из элементов двух исходных
Ввести массив A и B.Вычислить массив C.

Сформировать новый массив из двух исходных по данному правилу
Даны два одномерных массива A и B размерности 12. Вычислить массив C, если известно, что первый...

__________________
Помогаю в написании студенческих работ здесь.
10
0 / 0 / 0
Регистрация: 04.11.2010
Сообщений: 9
09.11.2010, 18:53  [ТС] 2
..ну неужели ни кто не может помочь(( Я же уверен для некоторых это как дважды два!
0
4851 / 3272 / 466
Регистрация: 10.12.2008
Сообщений: 10,570
10.11.2010, 08:30 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
60
61
62
63
64
65
66
67
68
69
#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;
}
Код
[guest@localhost tests]$ ./t
[a: first], [def], [abc], [def], [abc], [abc], [def], [abc], [def], [abc]
[ghi], [jkl], [ghi], [jkl], [ghi], [ghi], [jkl], [ghi], [jkl], [a: middle]
[mno], [pqr], [mno], [pqr], [mno], [mno], [pqr], [mno], [pqr], [a: last]
Search:
[a: first], [a: middle], [a: last]
[guest@localhost tests]$
1
0 / 0 / 0
Регистрация: 04.11.2010
Сообщений: 9
10.11.2010, 16:01  [ТС] 4
...Спасибо большое!
Извините, но я начинаю только изучать язык Си. Умею писать только простенькие программы. А вот задали мне вот такую задачку. Судя по программному коду, я думал что будет что-то попроще. Не могли бы объяснить поподробнее, что тут с чем используется, вообще что это программа делает?? А то я в замешательстве( Спасибо!
0
Jesus loves me
Эксперт С++
5163 / 3132 / 353
Регистрация: 12.12.2009
Сообщений: 7,919
Записей в блоге: 2
10.11.2010, 16:18 5
Цитата Сообщение от YuraStyle Посмотреть сообщение
Судя по программному коду, я думал что будет что-то попроще.
Да там вообще примитивный синтаксис, вы присмотритесь по-внимательней, может вас "много" строк напугали?

Добавлено через 1 минуту
Там может только size_t вам не знакомо - так это тип данных, похожий на unsigned int.
1
4851 / 3272 / 466
Регистрация: 10.12.2008
Сообщений: 10,570
11.11.2010, 01:30 6
Цитата Сообщение от YuraStyle Посмотреть сообщение
...Спасибо большое!
Извините, но я начинаю только изучать язык Си. Умею писать только простенькие программы. А вот задали мне вот такую задачку. Судя по программному коду, я думал что будет что-то попроще. Не могли бы объяснить поподробнее, что тут с чем используется, вообще что это программа делает?? А то я в замешательстве( Спасибо!
1. Определяются константы
2. Объявляются функции
3. Определяется функция main
3.1. Создаются массивы имен, отчеств и фамилий.
3.2. Создаётся массив имя-отчество-фамилия и заполняется нулями.
3.3. Выводятся массивы имён, отчеств и фамилий на экран
3.4. Проводится поиск имени, начинающегося на 'a'
3.4.1. Если оно найдено, записать его в массив имя-отчество-фамилия
3.5. Проводится поиск отчества, начинающегося на 'a'
3.5.1. Если оно найдено, записать его в массив имя-отчество-фамилия
3.6. Проводится поиск фамилии, начинающейся на 'a'
3.6.1. Если она найдена, записать её в массив имя-отчество-фамилия
3.7. Выводится массив имя-отчество-фамилия на экран /* (проверки не хватает, может нет значений) */
3.8. Выйти успешно.

2.1. Функция вывода массива.
2.1.1 Принять массив и количество объектов
2.1.2. Перебирать элементы массива, пока не достигнуто количество
2.1.2.1. Вывести на экран один элемент
2.1.2.2. Выбрать разделитель вывода элементов
2.1.2.2.1. Если элемент не последний, выбрать запятую, иначе выбрать перевод строки
2.1.3. Вернуть ничего.

2.2. Функция поиска в массиве.
2.2.1 Принять массив, символ и количество объектов
2.2.2. Перебирать элементы массива, пока не достигнуто количество
2.2.2.1. Проверить в элементе массива первый символ
2.2.2.1.1. Если первый символ элемента равен переданному символу, завершить функцию, возвращая элемент
2.2.3. Вернуть ноль.
1
0 / 0 / 0
Регистрация: 04.11.2010
Сообщений: 9
14.12.2010, 16:17  [ТС] 7
Ребята я прям не знаю, что делать
Вот сделали мне эту задачу! Но я запутался еще больше! Подскажите, что тут да как? И вообще верен ли этот исходный код по данному заданию? Спасибо!
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
#include "stdafx.h"
#include <vector>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    vector <char *> A(10), B(10), C(10), D(0);
    char *a,*b,*c, *v_d;
    char ac,bc,cc; 
    char param[20];
    int k,n;
    printf("Vvedite vektor imen:\n");
    for(int i=0; i<=9; i++)
    {
        printf("Student № %d\n",i);
        printf("Imya: ");
        gets(param);
        A[i]=param;
        printf("Familia: ");
        gets(param);
        B[i]=param;
        printf("Otchestvo: ");
        gets(param);
        C[i]=param;
        
        a=""; b=""; c=""; v_d="";
        printf("%d", A.size());
        strcpy(a,A.at(i));
        strcpy(b,B.at(i));
        strcpy(c,C.at(i));
        if((*a==*b)&&(*b==*c))
        {
            strcat(strcat(strcat(strcpy(v_d,""),a),b),c);
            for(int i=0; i<=strlen(v_d)-1; i++)
            {
                param[i]=*v_d;
                *v_d++;
            }
            D.push_back(param);
            
        }
        printf("\n");
    }
    for(int i=0; i<=D.size()-1; i++)
        printf(D[i]);
    scanf("%d", &k);
    return 0;
}
0
4851 / 3272 / 466
Регистрация: 10.12.2008
Сообщений: 10,570
15.12.2010, 02:31 8
C
1
strcpy(a,A.at(i));
a хранит адрес строкового литерала, а нужно, чтобы хранила адрес памяти, куда можно записывать
1
Jesus loves me
Эксперт С++
5163 / 3132 / 353
Регистрация: 12.12.2009
Сообщений: 7,919
Записей в блоге: 2
15.12.2010, 05:11 9
А то, что векторы A, B и С содержат во всех своих элементах один и тот же указатель, это так задуманно?
1
В астрале
Эксперт С++
8030 / 4787 / 655
Регистрация: 24.06.2010
Сообщений: 10,558
15.12.2010, 05:16 10
и надо разобрать именно в языке Си!
C++
1
2
3
#include <vector>
 
using namespace std;
Кэп недоумевает? оО
2
0 / 0 / 0
Регистрация: 04.11.2010
Сообщений: 9
15.12.2010, 23:13  [ТС] 11
Цитата Сообщение от Kastaneda Посмотреть сообщение
А то, что векторы A, B и С содержат во всех своих элементах один и тот же указатель, это так задуманно?
Не знаю что тут задумано Но в итоге программа должна выдавать из 10-ти введенных Ф.И.и О., те Ф.И.О. которые начинаются из одинаковых начальных букв! И всё! Не больше и не меньше! А это вообще у меня не работает

Добавлено через 2 минуты
Цитата Сообщение от ForEveR Посмотреть сообщение
Кэп недоумевает? оО
Так что её мне написали на С++??????? Я сам продолжаю недоумевать
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.12.2010, 23:13

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Сформировать вектор Z с элементами исходных векторов
X{x1, x2,..., xn} и Y{y1, y2,..., yn} -исходные векторы. Сформировать вектор Zс элементами zi=...

Сформировать вектор, состоящий из одинаковых элементов исходных векторов
Ввести два вектора X и Y, состоящих из 10-ти элементов целого типа. Сформировать вектор S,...

Сформировать вектор, содержащий все элементы исходных векторов, расположенные в порядке убывания
Заданы два произвольных вектора V и W. Составить программу для формирования вектора R,содержащего...

Сформировать последовательность из двух исходных
Помогите пожалуйста перевести программу с языка Си на Visual Basic. Особенно у меня затруднения с 1...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.