Тема: Задача C++

Спроектувати програму , що реалізує введення прізвища , імені та по-батькові як одного даного строкового типу. Визначити довжину рядка і кількість літер  ’ а ’  у ньому.
Вивести ім’я, кількість літер у третьому слові.

2 Востаннє редагувалося Kane (27.04.2015 19:43:42)

Re: Задача C++

Перше що прийшло до голови. Головне суть, на плюси переводьте самі:

#include <stdio.h>
#include <string.h>

int main() {
    char buf[100], temp_buf[100], name[50], 
        *temp, *ss;

    int a = 0, cnt = 0, 
        thr_wrd_len, len;

    memset(buf, 0, 100);

    gets(buf);

    temp = buf;

    while (*temp) {
        if (*temp == 'a' || *temp == 'A')
            a++;
        temp++;
    }

    memcpy(temp_buf, buf, 100);

    memset(name, 0, 50);

    ss = strtok(temp_buf, " ");

    do {
        ss = strtok(NULL, " ");
        cnt++;

        if (cnt == 1)
            memcpy(name, ss, strlen(ss));

        if (ss && cnt == 2)
            thr_wrd_len = strlen(ss);
    } while (ss);


    len = strlen(buf);

    printf("Surname Name Patronymic: %s\n"
           "Surname Name Patronymic len: %d\n"
           "'a': %d\n"
           "Name: %s\n"
           "Three word len: %d\n", 
           buf, len, a, name, thr_wrd_len);

    return 0;
}

Parashenka Petr Alekseevich[enter]
Surname Name Patronymic: Parashenka Petr Alekseevich
Surname Name Patronymic len: 27
'a': 4
Name: Petr
Three word len: 11

Подякували: dima.nykorovych1

3

Re: Задача C++

Всього за якісь нещасні $100 я напишу цю програму. Або покажіть свої напрацювання і скажіть що саме у вас не получається. Допоможемо порадою, безкоштовно :)

4 Востаннє редагувалося Kane (27.04.2015 21:46:46)

Re: Задача C++

Ну і чистовий, більш "гарний", варіант:

#include <stdio.h>
#include <string.h>

#define SIZE_PIB 3
#define SYM_SRCH_LOW 'a'

enum { Surname, Name, Patronymic };


int get_words(char **arr, char *src, char *dst) {
    int i = 0;

    memcpy(dst, src, strlen(src) + 1);

    char *p = strtok(dst, " ");
    arr[i++] = p;

    do {
        p = strtok(NULL, " ");

        if (p)
            arr[i++] = p;
    } while (p);

    return i;
}

int get_a(char *src) {
    char *temp = src;
    int a = 0;

    while (*temp) {
        if (*temp == SYM_SRCH_LOW || *temp == toupper(SYM_SRCH_LOW))
            a++;
        temp++;
    }

    return a;
}


int main() {
    char buff[100],
        dst[100];

    char *share[SIZE_PIB];

    printf("Enter please full name. Example: Parashenka Petr Alekseevich\n");

    while (1) {
        int pib_len;
        gets(buff);

        if ((pib_len = get_words(share, buff, dst)) != SIZE_PIB)
            printf("reenter please\n");
        else
            break;
    }

    printf("PIB: %s\n"
           "PIB len: %d\n"
           "'a': %d\n"
           "Name: %s\n"
           "Three word len: %d\n",
           buff, strlen(buff), get_a(buff), share[Name], strlen(share[Patronymic]));

    return 0;
}
Подякували: dima.nykorovych1

5

Re: Задача C++

Ведмежа послуга!

6

Re: Задача C++

Yola написав:

Ведмежа послуга!

Що не так?

7

Re: Задача C++

Чому C ??????, а не C++ - IMHO C++ - рулит

Kane написав:

Перше що прийшло до голови. Головне суть, на плюси переводьте самі:

#include <stdio.h>
#include <string.h>

int main() {
    char buf[100], temp_buf[100], name[50], 
        *temp, *ss;

    int a = 0, cnt = 0, 
        thr_wrd_len, len;

    memset(buf, 0, 100);

    gets(buf);

    temp = buf;

    while (*temp) {
        if (*temp == 'a' || *temp == 'A')
            a++;
        temp++;
    }

    memcpy(temp_buf, buf, 100);

    memset(name, 0, 50);

    ss = strtok(temp_buf, " ");

    do {
        ss = strtok(NULL, " ");
        cnt++;

        if (cnt == 1)
            memcpy(name, ss, strlen(ss));

        if (ss && cnt == 2)
            thr_wrd_len = strlen(ss);
    } while (ss);


    len = strlen(buf);

    printf("Surname Name Patronymic: %s\n"
           "Surname Name Patronymic len: %d\n"
           "'a': %d\n"
           "Name: %s\n"
           "Three word len: %d\n", 
           buf, len, a, name, thr_wrd_len);

    return 0;
}

Parashenka Petr Alekseevich[enter]
Surname Name Patronymic: Parashenka Petr Alekseevich
Surname Name Patronymic len: 27
'a': 4
Name: Petr
Three word len: 11

8

Re: Задача C++

olmovc написав:

Чому C ??????, а не C++

В контексті вирішення цієї задачі - всеодно на чому писати.

olmovc написав:

IMHO C++ - рулит

"кесарю кесареве".

9

Re: Задача C++

допоможіть написати задачу і алгоритм
Новорічні подарунки
Діду Морозу і Снігурочці потрібно доставити N подарунків дітям.
Знаючи час T1 пакування кожного подарунку Снігурочкою та час його доставки Дідом Морозом T2, знайти найменший час, за який вони зможуть виконати всі замовлення. В свій мішок Дід Мороз може вкласти лише один подарунок.
Технічні умови
   Вхідні дані
   У першому рядку єдине число N - кількість подарунків. У наступних 2-х рядках через пропуск по N чисел, відповідно: у другому рядку - час пакування кожного подарунку Снігуронькою, у третьому - час його доставки Дідом Морозом.
   1 ≤ N ≤ 300, 0 < T1, T2 ≤ 1000.
   Вихідні дані
   Єдине число - найменший час доставки всіх подарунків.
Інформація про задачу
Ліміт часу: 1 секунда
Ліміт пам`яті: 64 MB
Бали за пройдений тест: 10
Складність: 53% 28/60
Приклад
Приклад вхідних даних
5
4   4   30    6    2
5   1    4    30   3   
Приклад вихідних даних
47

10

Re: Задача C++

Пані Христино, створіть, будь ласка, нову тему для вашої задачі.
Для цього перейдіть за посиланням: http://replace.org.ua/new/topic/6/.

11

Re: Задача C++

А краще - прочитайте, нарешті, правила. Ви ж із ними погодилися, хіба ні?

12

Re: Задача C++

koala написав:

А краще - прочитайте, нарешті, правила. Ви ж із ними погодилися, хіба ні?

99,99% користувачів погоджуються не з правилами, а з тим, що потрібно поставити галочку, щоб перейти на наступний крок реєстрації, так що тут питання спірне :)