Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
TheVlad
5 / 5 / 1
Регистрация: 24.10.2012
Сообщений: 102
#1

Задачки на Функциями с переменным числом параметров - C++

05.01.2013, 00:41. Просмотров 677. Ответов 19
Метки нет (Все метки)

Выручайте , очень надо сделать 2 задачки, не могу разобраться с Функциями с переменным числом параметров...


1. Написать функцию, которая формирует из заданного предложения новое с инверсным порядком слов. На основе разработанной функции вывести введенные предложения с обратным порядком слов.

2. В функцию с переменным числом параметров поступают действительные числа, количество которых задано первым параметром. Найти и вывести те из них, в которых первая цифра дробной части равна последней цифре целой части.
(со второй почти разобрался, но не могу понять как реализовать ввод чисел в функцию и еще кое что)..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.01.2013, 00:41     Задачки на Функциями с переменным числом параметров
Посмотрите здесь:

Функции с переменным числом параметров - C++
Написать функцию sum с переменным числом параметров, которая находит сумму чисел типа int по формуле: S=a1*a2+a3*a4+a5*a6+. . . . . ...

Функция с переменным числом параметров - C++
Задача посчитать сокрытые сумму сокрытых аргументов ф-ции. #include<iostream> #include<conio.h> #include<stdarg.h> using namespace...

Функция с переменным числом параметров - C++
Функция с переменным числом параметров. Задание: Среднее арифметическое с елементов в списке параметров ,которые стоят на парных местах.

Конструктор с переменным числом параметров - C++
Привет Всем! интересует вопрос возможно ли описать Конструктор с переменным числом параметров? То есть возможен ли следующий код: ...

Функции с переменным числом параметров - C++
Подскажите как работают функции с переменным числом параметров, как их составлять. Почитал немного в инете про это, кажется только больше...

Функция с переменным числом параметров - C++
Написать функцию sum с переменным числом параметров, которая находит сумму заданных обыкновенных дробей. Написать вызывающую функцию main,...

Функции с переменным числом параметров - C++
Написать функцию max с переменным числом параметров, которая находит минимальное из чисел типа int или из чисел типа double, тип параметров...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pakisan
14 / 14 / 1
Регистрация: 04.01.2013
Сообщений: 61
05.01.2013, 01:11     Задачки на Функциями с переменным числом параметров #2
эм, инверсионный порядок слов это в твоем понимании что?
пример:
1) просто тест - тсет отсорп
2) просто тест - отсорп тсет

что из выше перечисленного?
TheVlad
5 / 5 / 1
Регистрация: 24.10.2012
Сообщений: 102
05.01.2013, 01:19  [ТС]     Задачки на Функциями с переменным числом параметров #3
просто тест - тест просто
softmob
1248 / 698 / 155
Регистрация: 20.02.2010
Сообщений: 1,035
05.01.2013, 01:34     Задачки на Функциями с переменным числом параметров #4
2)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cstdarg>
 
void fucn(size_t n, ...)
{      
    va_list ap;
    va_start(ap, n);
 
    for (size_t i = 0; i < n; ++i)
    {
        double val = va_arg(ap, double);    
        //ваша проверка
        std::cout << val << std::endl;
    }
 
    va_end(ap);
}
 
int main(void)
{
    fucn(3, 1.1, 1.2, 1.3);
    return 0;
}
Pakisan
14 / 14 / 1
Регистрация: 04.01.2013
Сообщений: 61
05.01.2013, 01:37     Задачки на Функциями с переменным числом параметров #5
1)
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
#include <cstdlib>
#include <string>
using namespace std;
 
const int size=20; // размер массива для хранения строки
 
char massive[size]; // Массив для хранения строки.
 
void show(char *massive); // Прототип функции для вывода массива в стандартном виде
void inshow(char *massive); // Прототип функции для вывода инверсионной строки.
 
void main()
{
    gets(massive);
    inshow(massive);
    cout<<'\n';
    show(massive);
    system("pause");
}
 
void enter()
{
    gets(massive);
}
 
void show(char *massive)
{
    int x=0;
    while(massive[x]!='\0')
    {
        cout<<massive[x];
        x++;
    }
}
 
void inshow(char *massive)
{
  // Доп. проверка на случай неполного заполнения массива, помогает избежать перекоса.
    int y=0;
    while(massive[y])
        y++;
 
    for(int x=y;x>=0;x--)
        cout<<massive[x];
}
Немного самопал, но вроде работает)
TheVlad
5 / 5 / 1
Регистрация: 24.10.2012
Сообщений: 102
05.01.2013, 01:46  [ТС]     Задачки на Функциями с переменным числом параметров #6
Цитата Сообщение от Pakisan Посмотреть сообщение
1)
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
#include <cstdlib>
#include <string>
using namespace std;
 
const int size=20; // размер массива для хранения строки
 
char massive[size]; // Массив для хранения строки.
 
void show(char *massive); // Прототип функции для вывода массива в стандартном виде
void inshow(char *massive); // Прототип функции для вывода инверсионной строки.
 
void main()
{
    gets(massive);
    inshow(massive);
    cout<<'\n';
    show(massive);
    system("pause");
}
 
void enter()
{
    gets(massive);
}
 
void show(char *massive)
{
    int x=0;
    while(massive[x]!='\0')
    {
        cout<<massive[x];
        x++;
    }
}
 
void inshow(char *massive)
{
  // Доп. проверка на случай неполного заполнения массива, помогает избежать перекоса.
    int y=0;
    while(massive[y])
        y++;
 
    for(int x=y;x>=0;x--)
        cout<<massive[x];
}
Немного самопал, но вроде работает)
спасибо, но мне обязательно нужно используя функцию с переменным числом параметров....
Pakisan
14 / 14 / 1
Регистрация: 04.01.2013
Сообщений: 61
05.01.2013, 01:49     Задачки на Функциями с переменным числом параметров #7
TheVlad, если подождешь, то сейчас скину другой вариант.
TheVlad
5 / 5 / 1
Регистрация: 24.10.2012
Сообщений: 102
05.01.2013, 01:58  [ТС]     Задачки на Функциями с переменным числом параметров #8
Цитата Сообщение от Pakisan Посмотреть сообщение
TheVlad, если подождешь, то сейчас скину другой вариант.
я не тороплюсь =))
Pakisan
14 / 14 / 1
Регистрация: 04.01.2013
Сообщений: 61
05.01.2013, 03:00     Задачки на Функциями с переменным числом параметров #9
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
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
 
char *massive;
 
void nm();
void sm();
 
void main()
{
    nm();
    sm();
    delete [] massive;
    system("pause");
}
 
void nm()
{
    int l;
    cout<<"Please choose massive's size. Remember size+1 simbol for 'end'\n";
    cin>>l;
    massive=new char[l];
    cin.clear();
    cin.sync();
}
 
void sm()
{
    cout << "Massive is: ";
    gets(massive);
    int x=0;
    while(massive[x])
        x++;
    for(int z=x;z>=0;--z)
        cout<<massive[z];
    cout<<"\n";
}
Эдакий зомби, без проверок, но работает.
Если это то, то причешу и скину финальный.
P.S. массив динамичный, использовал new и delete, это устраивает?
TheVlad
5 / 5 / 1
Регистрация: 24.10.2012
Сообщений: 102
05.01.2013, 03:58  [ТС]     Задачки на Функциями с переменным числом параметров #10
Цитата Сообщение от Pakisan Посмотреть сообщение
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
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
 
char *massive;
 
void nm();
void sm();
 
void main()
{
    nm();
    sm();
    delete [] massive;
    system("pause");
}
 
void nm()
{
    int l;
    cout<<"Please choose massive's size. Remember size+1 simbol for 'end'\n";
    cin>>l;
    massive=new char[l];
    cin.clear();
    cin.sync();
}
 
void sm()
{
    cout << "Massive is: ";
    gets(massive);
    int x=0;
    while(massive[x])
        x++;
    for(int z=x;z>=0;--z)
        cout<<massive[z];
    cout<<"\n";
}
Эдакий зомби, без проверок, но работает.
Если это то, то причешу и скину финальный.
P.S. массив динамичный, использовал new и delete, это устраивает?
ну спасибо=) это что то подходящее, правда если бы еще там функции были что то типа этой void fucn(size_t n, ...)... но всеравно спасибо, только если можеш подправить немного, ато оно работает но плюс до всего какие то ошибки выдает....
Pakisan
14 / 14 / 1
Регистрация: 04.01.2013
Сообщений: 61
05.01.2013, 04:49     Задачки на Функциями с переменным числом параметров #11
TheVlad, оке, но не ошибки а предупреждения с рекомендацией отказаться от gets в пользу gets_s(насколько помню)

Добавлено через 46 минут
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
#include <iostream>
#include <cstdlib>
using namespace std;
 
char *massive;
int size;
 
void massiveatwork(int size, char *massive);
void checkmassive(char *massive);
void showmassive(char *massive);
 
void main()
{
    cin>>size; // вводим размер массива
    massiveatwork(size, massive);
    delete [] massive; // Удаляем массив
    system("pause");
}
 
void massiveatwork(int size, char *massive)
{
    massive = new char [size]; // Создаем массив
    cin.clear();cin.sync(); // Очищаем входящий поток, без этого функцию gets(massive) пропускает(?!?)
    cout<<"Write in massive, than push enter: ";
    gets(massive); // Заполняем массив.
    checkmassive(massive);
}
 
// Проверка на выход за пределы массива
void checkmassive(char *massive)
{
    int x=0,y=0;
    while(massive[x])
        x++;
    if(x>size)
    {
        cout<<"Out of massive:\n Please rewrite massive\n";
        while(massive[y])
        {
            massive[y]='\0';
            y++;
        }
        return massiveatwork(size, massive);
    }
    else
        showmassive(massive);
}
 
void showmassive(char *massive)
{
    int x=0;
    while(massive[x])
        x++;
    cout<<"Before inversion: "<<massive<<'\n'<<"After: ";
    for(int y=x;y>=0;--y)
        cout<<massive[y];
    cout<<'\n';
}
Вот, перед сном поправил, вроде проблем быть не должно...
Реализовал:
1)Проверку на выход за пределы массива с возможностью переписать содержимое
2)Функция(надеюсь нужного тебе вида)
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,009
05.01.2013, 08:12     Задачки на Функциями с переменным числом параметров #12

Не по теме:

Pakisan, зачем Вы все это пишете? В задании ясно сказано, что необходимо использовать функции с переменным числом параметров, что и было продемонстрировано в посте #4. Ваши решения исходному требованию не соответствуют.



Добавлено через 41 минуту
TheVlad, попробуйте такой вариант по первому пункту.
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
#include <stdarg.h>
#include <stdio.h>
 
/* Функция формирует массив, состоящий из строк, переданных в качестве
 * аргументов. Порядок строк в массиве - обратный исходному.
 *
 * out - выходной параметр. Массив строк, в который будут сохранены аргументы
 *     в обратном порядке.
 *
 * n - количество параметров.
 */
void inverse(char** out, size_t n, ...)
{
    va_list vl;
    va_start(vl, n);
 
    while (n--)
    {
        out[n] = va_arg(vl, char*);
    }
 
    va_end(vl);
}
 
int main()
{
    const int N = 100;
    char* buf[N];
 
    const int args = 3;
    inverse(buf, args, "foo", "bar", "baz");
 
    int i;
    for (i = 0; i < args; ++i)
    {
        printf("%s\n", buf[i]);
    }
    
    return 0;
}
TheVlad
5 / 5 / 1
Регистрация: 24.10.2012
Сообщений: 102
06.01.2013, 16:03  [ТС]     Задачки на Функциями с переменным числом параметров #13
Цитата Сообщение от 0x10 Посмотреть сообщение

Не по теме:

Pakisan, зачем Вы все это пишете? В задании ясно сказано, что необходимо использовать функции с переменным числом параметров, что и было продемонстрировано в посте #4. Ваши решения исходному требованию не соответствуют.



Добавлено через 41 минуту
TheVlad, попробуйте такой вариант по первому пункту.
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
#include <stdarg.h>
#include <stdio.h>
 
/* Функция формирует массив, состоящий из строк, переданных в качестве
 * аргументов. Порядок строк в массиве - обратный исходному.
 *
 * out - выходной параметр. Массив строк, в который будут сохранены аргументы
 *     в обратном порядке.
 *
 * n - количество параметров.
 */
void inverse(char** out, size_t n, ...)
{
    va_list vl;
    va_start(vl, n);
 
    while (n--)
    {
        out[n] = va_arg(vl, char*);
    }
 
    va_end(vl);
}
 
int main()
{
    const int N = 100;
    char* buf[N];
 
    const int args = 3;
    inverse(buf, args, "foo", "bar", "baz");
 
    int i;
    for (i = 0; i < args; ++i)
    {
        printf("%s\n", buf[i]);
    }
    
    return 0;
}
ну это больше подходит, только мне бы как то реализовать что бы самому вводить слова...
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,009
06.01.2013, 16:28     Задачки на Функциями с переменным числом параметров #14
В чем конкретно проблема с вводом данных?
TheVlad
5 / 5 / 1
Регистрация: 24.10.2012
Сообщений: 102
06.01.2013, 16:32  [ТС]     Задачки на Функциями с переменным числом параметров #15
Цитата Сообщение от 0x10 Посмотреть сообщение
В чем конкретно проблема с вводом данных?
ну слова заранее введены в коде программы, а мне надо что бы самому вводить в диалоговом окне , ну и тамже выбирать количество слов...
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,009
06.01.2013, 16:46     Задачки на Функциями с переменным числом параметров #16
Функции, о которых идет речь, нужны для того, чтобы использоваться в программе с различным числом параметров. Не для того, чтобы пользователь выбирал какую функцию вызвать - он о них вообще ничего не знает.

Добавлено через 2 минуты
Пример чтоли привести...
В заголовочном файле stdio.h объявлена функция scanf, которая как раз является ф-ей с переменным числом параметров. Однако если нам нужно запросить у пользователя ввод нескольких значений, мы не выбираем способ вызова функции, мы пишем цикл.
TheVlad
5 / 5 / 1
Регистрация: 24.10.2012
Сообщений: 102
06.01.2013, 16:56  [ТС]     Задачки на Функциями с переменным числом параметров #17
Цитата Сообщение от 0x10 Посмотреть сообщение
Функции, о которых идет речь, нужны для того, чтобы использоваться в программе с различным числом параметров. Не для того, чтобы пользователь выбирал какую функцию вызвать - он о них вообще ничего не знает.

Добавлено через 2 минуты
Пример чтоли привести...
В заголовочном файле stdio.h объявлена функция scanf, которая как раз является ф-ей с переменным числом параметров. Однако если нам нужно запросить у пользователя ввод нескольких значений, мы не выбираем способ вызова функции, мы пишем цикл.
то есть используя функции с переменным числом параметров, невозможно сделать так чтобы args и слова воодить в диалоговом окне? я правильно понял? ну или хотябы сами слова которые будут инверсированы?
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,009
06.01.2013, 18:58     Задачки на Функциями с переменным числом параметров #18
Скажем так, я не знаю как это сделать просто и красиво.
TheVlad
5 / 5 / 1
Регистрация: 24.10.2012
Сообщений: 102
06.01.2013, 19:28  [ТС]     Задачки на Функциями с переменным числом параметров #19
Цитата Сообщение от 0x10 Посмотреть сообщение
Скажем так, я не знаю как это сделать просто и красиво.
и на том спасибо..=)

Добавлено через 2 минуты
вопрос остается открытым =)
если кто может сделать ПЕРВУЮ задачку, буду очень благодарен =)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2013, 03:29     Задачки на Функциями с переменным числом параметров
Еще ссылки по теме:

Функции с переменным числом параметров - C++
Добрый день, уважаемые знатоки С++! Подскажите пожалуйста, что не правильно в моем коде? Необходимо написать функцию с переменным...

В функция с переменным числом параметров. - C++
В функцию с переменным числом параметров поступают слова, конец списка - указатель NULL. Найти и вывести все слова, которые читаются...

Функции с переменным числом параметров - C++
Прошу помочь знатоков С++ в решении задачи, т.к. только начал изучать данный язык. Решить задачу, используя функции с переменным...

Функция с переменным числом параметров - C++
Написать функцию с переменным числом параметров, которая определяет количество чисел, являющихся точными квадратами (2, 4, 9, 16,. . . )...

Функции с переменным числом параметров - C++
функции с переменным числом параметров в качестве параметра форматная строка,как задать это дело в Cи и что можно сказать преподу


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

Или воспользуйтесь поиском по форуму:
TheVlad
5 / 5 / 1
Регистрация: 24.10.2012
Сообщений: 102
08.01.2013, 03:29  [ТС]     Задачки на Функциями с переменным числом параметров #20
АП, буду очень благодарен если кто нить сделает первую задачку, только что бы слова вводить в диалоговом окне...

Добавлено через 4 часа 17 минут
UP !!!
Yandex
Объявления
08.01.2013, 03:29     Задачки на Функциями с переменным числом параметров
Ответ Создать тему
Опции темы

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