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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.70
xotabs
0 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 26
#1

Функции в С++ - C++

10.11.2008, 22:44. Просмотров 3091. Ответов 14
Метки нет (Все метки)

Привет всем! Подскажите как написать данную программу, но уже в виде функций, а то я в Си новичок, и многого не понимаю.
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
#include <conio.h>;
#include <stdio.h>
#include <stdlib.h>;
#include <time.h>;
 
void main() {
    int a[20],b[20],c[20];
    int rn;
    unsigned i,k1,k2;
 
    srand(time(0));
    printf("            Ich array numbers\n");
    for (i=0; i<20; i++)
    { 
        *(a+i)=-50+rand()%100;
        printf("%4d",*(a+i)); 
    }
    for (i=0; i<20; i++)
    {
        *(b+i)=0;
        *(c+i)=0;
    }
    k1=0;
    k2=0;
    for (i=0; i<20; i++)
    {
        if (*(a+i)>=0)
        {
            k1=k1+1;
            *(b+k1)=*(a+i);
        }
        else
        {
            k2=k2+1;
            *(c+k2)=*(a+i);
        }
    }
    printf("\n\n\n");
    printf("            Array + numbers\n");
    for (i=1; i<=k1; i++)
    {
        printf("%4d",*(b+i));
    }
    printf("\n\n\n");
    printf("             Array - numbers\n");
    for (i=1; i<=k2; i++)
    {
        printf("%4d",*(c+i));
    }
    getch();
}
В виде ф-ий оформить:
а) ввод исходных массивов;
б) вывод исходных массивов;
в) обработку массивов в соответствии с заданием;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2008, 22:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функции в С++ (C++):

Функции. Как после одного возвратного значения функции отталкиваться от возврата другой функции - C++
Написал код, в котором 2 функции одна возвращает стринговое значение, вторая должна бы вернуть значение, отталкиваясь от первой. Возможно...

Вызов функции внутри другой функции с передачей локальной переменной по ссылке - C++
Столкнулся с очень с интересной проблемой. Можно ли так делать? #include &lt;iostream&gt; using std::cout; void f(const int &amp;ref){...

Найти среднее арифметическое значений функции f(x) в точках а, b, (a+b)/2, используя обращение к функции - C++
здраствуйте знатаки!! помогите пожалуйсто решить задачу.Найти среднее арифметическое значений функции f(x) в точках а, b, (a+b)/2,...

Найти среднее арифметическое значений функции f(x) в точках а, b, (a+b)/2, используя обращение к функции - C++
Найти среднее арифметическое значений функции f(x) в точках а, b, (a+b)/2, используя обращение к функции. f=arctgx+ln^2 x^2 Нужно...

Как будут инициализированы переменные в теле функции и вне тела функции? - C++
Здравствуйте. Подскажите, пожалуйста, как будут инициализированы переменные в теле функции и вне тела функции? Какими значениями? ...

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

14
Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167
10.11.2008, 23:00 #2
=) ты забыл добавить библиотеку time.h
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
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <time.h>
using namespace std;
void ArrayMassiv(int a[],int b[],int c[])
{
int rn;
unsigned i,k1,k2;
printf(" Ich array numbers\n");
for (i=0; i<20; i++)
{ 
*(a+i)=-50+rand()%100;
printf("%4d",*(a+i)); 
}
for (i=0; i<20; i++)
{
*(b+i)=0;
*(c+i)=0;
}
k1=0;
k2=0;
for (i=0; i<20; i++)
{
if (*(a+i)>=0)
{
k1=k1+1;
*(b+k1)=*(a+i);
}
else
{
k2=k2+1;
*(c+k2)=*(a+i);
}
}
printf("\n\n\n");
printf(" Array + numbers\n");
for (i=1; i<=k1; i++)
{
printf("%4d",*(b+i));
}
printf("\n\n\n");
printf(" Array - numbers\n");
for (i=1; i<=k2; i++)
{
printf("%4d",*(c+i));
}
getch();
}
void main() {
srand(time(0));
int a[20],b[20],c[20];
 
ArrayMassiv(a,b,c);
 
}
Это работа с функцией без прототипа, прикольно пишешь через указатели массив заполняешь.
1
xotabs
0 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 26
10.11.2008, 23:09  [ТС] #3
Расскажи что такое:
[QUOTE=Casper!;70619]
Код
#include<windows.h>
*****
usingnamespacestd;
А как написать оттдельно в виде функций ввод массива, выполнения действий над ним. И вывод получившегося массива? И ещё чтобы глобальные переменные не использовались в данной программе.
P.S Я что-то вообще про эти функции не понимаю.
0
Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167
10.11.2008, 23:36 #4
а извени ща исправлю код
using namespace std;
я когда с копировал он все слова слитно ,
а вообще это команда для работы с cout<<;
#include<windows.h>
это осталось со старого проэкта ,она тебе в будущем пригодиться ,даже для таких маленьких вещеи как system("cls"); и для работы с курсором команды SetConsoleCursorPosition.

Ну для работы с массивом можно через указатель.
зделать отдельную функцыю заполнения отдельную вывоод на экан и т.д.
и что ты имеешь в виду глобальные переменные???? или вернее где ты увидел в нашеи програме глобальные переменные?
0
Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167
10.11.2008, 23:44 #5
На тебе примеры ,я дуаю тебе это пригодиться и еще я тут как бы конспект виду элктронный я правда его не закончил но скажем тебе пока этого с головои =)
0
Вложения
Тип файла: txt Domawki.txt (55.2 Кб, 389 просмотров)
Тип файла: txt Функции.txt (2.9 Кб, 92 просмотров)
Тип файла: doc С++.doc (535.0 Кб, 146 просмотров)
xotabs
0 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 26
11.11.2008, 14:04  [ТС] #6
Спасибо за столь ценную инфу. Пишу ф-ю заполнения массива, а она мне генерирует одно и тоже число. В чём дело может быть? Да и программа завершается с ошибкой.
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
#include <conio.h>;
#include <stdio.h>
#include <stdlib.h>;
#include <time.h>;
 
 
void generate(int a[], int size)
{
int i;
for (i=0; i<size; i++)
    { 
        srand(time(0));
        *(a+i)=-50+rand()%100;
        printf("%4d",*(a+i)); 
    }
}
 
void main() {
    int a[20],b[20],c[20];
    int rn;
    unsigned i,k1,k2;
    generate(a,20);
    
    printf("            Ich array numbers\n");
    
    for (i=0; i<20; i++)
    {
        *(b+i)=0;
        *(c+i)=0;
    }
    k1=0;
    k2=0;
    for (i=0; i<20; i++)
    {
        if (*(a+i)>=0)
        {
            k1=k1+1;
            *(b+k1)=*(a+i);
        }
        else
        {
            k2=k2+1;
            *(c+k2)=*(a+i);
        }
    }
    printf("\n\n\n");
    printf("            Array + numbers\n");
    for (i=1; i<=k1; i++)
    {
        printf("%4d",*(b+i));
    }
    printf("\n\n\n");
    printf("             Array - numbers\n");
    for (i=1; i<=k2; i++)
    {
        printf("%4d",*(c+i));
    }
    getch();
}
0
Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167
11.11.2008, 14:37 #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
50
51
52
53
54
55
56
57
58
#include <iostream>
#include <time.h>
#include <string.h>
using namespace std;
void generate(int a[], int size)
{
 
int i;
for (i=0; i<size; i++)
{ 
*(a+i)=-50+rand()%100;
printf("%4d",*(a+i)); 
}
}
void main() {
 
int a[20],b[20],c[20];
int rn;
unsigned i,k1,k2;
srand(time(0));
generate(a,20);
 
printf(" Ich array numbers\n");
 
for (i=0; i<20; i++)
{
*(b+i)=0;
*(c+i)=0;
}
k1=0;
k2=0;
for (i=0; i<20; i++)
{
if (*(a+i)>=0)
{
k1=k1+1;
*(b+k1)=*(a+i);
}
else
{
k2=k2+1;
*(c+k2)=*(a+i);
}
}
printf("\n\n\n");
printf(" Array + numbers\n");
for (i=1; i<=k1; i++)
{
printf("%4d",*(b+i));
}
printf("\n\n\n");
printf(" Array - numbers\n");
for (i=1; i<=k2; i++)
{
printf("%4d",*(c+i));
}
cout<<'\n';
}
1
xotabs
0 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 26
11.11.2008, 14:44  [ТС] #8
А что это такое cout<<?
0
Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167
11.11.2008, 14:52 #9
вот эту строку всегда пиши в void main() srand(time(0));если писать в void main то рандом всегда будет разные и не когда srand(time(0)); не всовывать в цыкл.
потом зачем тебе getch();????и для нее подключать лишнию библиотеку хм.
вот еще так можно зделать =))
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
void generate(int a[], int size)
{
 
int i;
for (i=0; i<size; i++)
{ 
*(a+i)=-50+rand()%100;
printf("%4d",*(a+i)); 
}
}
void print(int a[],int size)
{
int rn;
int b[20],c[20];
unsigned i,k1,k2;
printf(" Ich array numbers\n");
for (i=0; i<size; i++)
{
*(b+i)=0;
*(c+i)=0;
}
k1=0;
k2=0;
for (i=0; i<size; i++)
{
if (*(a+i)>=0)
{
k1=k1+1;
*(b+k1)=*(a+i);
}
else
{
k2=k2+1;
*(c+k2)=*(a+i);
}
}
printf("\n\n\n");
printf(" Array + numbers\n");
for (i=1; i<=k1; i++)
{
printf("%4d",*(b+i));
}
printf("\n\n\n");
printf(" Array - numbers\n");
for (i=1; i<=k2; i++)
{
printf("%4d",*(c+i));
}
cout<<'\n';
}
void main() {
 
const int size=20;
int a[size];
 
srand(time(0));
generate(a,size);
print(a,size);
 
}
[size="1"][color="#666686"]Добавлено через 3 минуты 34 секунды
А что это такое cout<<?
cout<<"вывод текста на экран ":
в конспекте в самом начале про это написано =).
тоже самое что и printf("\n\n\n");(наверное).
только меньше писать и ненадо скобочек
1
xotabs
0 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 26
11.11.2008, 15:00  [ТС] #10
Вот вроде всё правильно написал. Но программа неожиданное завершается и выдаёт сообщение насчёт k1
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
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream>
using namespace std;
 
void GENERATE(int a[], int size)
{
int i;
for (i=0; i<size; i++)
    { 
        *(a+i)=-50+rand()%100;
        printf("%4d",*(a+i)); 
    }
}
 
void NULLL(int b[], int c[], int size)
{
int i;
for (i=0; i<size; i++)
    {
        *(b+i)=0;
        *(c+i)=0;
    }
}
 
int FUNC(int a[], int b[], int c[], int size)
{
int i,k1,k2;
k1=0;
k2=0;
for (i=0; i<size; i++)
    {
        if (*(a+i)>=0)
        {
            k1=k1+1;
            *(b+k1)=*(a+i);
        }
        else
        {
            k2=k2+1;
            *(c+k2)=*(a+i);
        }
    }
return k1,k2;
}
 
void print_b(int b[],int k1)
{
int i;
for (i=1; i<=k1; i++)
    {
        printf("%4d",*(b+i));
    }   
}
 
void print_c(int c[], int k2)
{
int i;
for (i=1; i<=k2; i++)
    {
        printf("%4d",*(c+i));
    }
}
void main() {
    int a[20],b[20],c[20];
    int rn;
    int i,k1,k2;
    srand(time(0));
    GENERATE(a,20);
    printf("            Ich array numbers\n");
    NULLL(b,c,20);
    FUNC(a,b,c,20);
    printf("\n\n\n");
    printf("            Array + numbers\n");
    print_b(b,k1);
    printf("\n\n\n");
    printf("             Array - numbers\n");
    print_c(c,k2);  
    cout<<'\n';
}
А как тогда задержку поставить, чтобы я смог увидеть результат?
0
Lord_Voodoo
Супер-модератор
8590 / 2205 / 61
Регистрация: 07.03.2007
Сообщений: 10,960
Завершенные тесты: 1
11.11.2008, 15:35 #11
используй getch() из conio.h
1
Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167
11.11.2008, 15:44 #12
Я стобои мастером по массивам стану и по обычному С,я уже глядя говорю где ты напартачил без копирования кода в студию.
1) надо убрать еще раз создания
C++
1
2
3
void main() {
 int rn;
    int i,k1,k2;
и создать их глобально(ты вообще читал конспект там сказано что при выходе с функцый переменная удоляеться)
короче вот исправленый код смотри =)
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
70
71
72
73
74
75
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream>
using namespace std;
int k1=0,k2=0;
void GENERATE(int a[], int size)
{
int i;
for (i=0; i<size; i++)
{ 
*(a+i)=-50+rand()%100;
printf("%4d",*(a+i)); 
}
}
//void NULLL(int b[], int c[], int size)
//{
// int i;
// for (i=0; i<size; i++) //зачем она????
// {
// *(b+i)=0;
// *(c+i)=0;
// }
//}
void FUNC(inta[], intb[], intc[], intsize)
{
int i;
k1=0;
k2=0;
for (i=0; i<size; i++)
{
if (*(a+i)>=0)
{
k1=k1+1;
*(b+k1)=*(a+i);
}
else
{
k2=k2+1;
*(c+k2)=*(a+i);
}
}
}
void print_b(int b[],int k1)
{
int i;
for (i=1; i<=k1; i++)
{
printf("%4d",*(b+i));
} 
}
void print_c(intc [], int k2)
{
inti;
for (i=1; i<=k2; i++)
{
printf("%4d",*(c+i));
}
}
void main() {
int a[20],b[20],c[20];
srand(time(0));
GENERATE(a,20);
printf(" Ich array numbers\n");
//NULLL(b,c,20);
FUNC(a,b,c,20);
printf("\n\n\n");
printf(" Array + numbers\n");
print_b(b,k1);
printf("\n\n\n");
printf(" Array - numbers\n");
print_c(c,k2); 
cout<<'\n';
}
[size="1"][color="#666686"]Добавлено через 2 минуты 34 секунды
Цитата Сообщение от xotabs Посмотреть сообщение
А как тогда задержку поставить, чтобы я смог увидеть результат?
что значит посмотреть результат ??? оно же нормально выводит на экран что получилось и пока не нажмешь любую клавишу будет весеть окошко
1
xotabs
0 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 26
11.11.2008, 22:29  [ТС] #13
Casper!, читать-то я читал, но на практике допускаю мн-во ошибок.

Цитата Сообщение от Casper! Посмотреть сообщение
оно же нормально выводит на экран что получилось и пока не нажмешь любую клавишу будет весеть окошко
Нет, у меня программа выполняется и сразу же закрывается.
0
Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167
12.11.2008, 01:46 #14
даже мои код ???
0
xotabs
0 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 26
12.11.2008, 16:02  [ТС] #15
Цитата Сообщение от Casper! Посмотреть сообщение
даже мои код ???
Да.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2008, 16:02
Привет! Вот еще темы с ответами:

Табулирование заданной функции и определение максимального и минимального значения функции в таблице - C++
Разработать консольное приложение, производящее табулирование заданной функции и определение максимального и минимального значения функции...

Вычислить m значений функции f(x) на отрезке [a, b]. Вычисление величины f(x) оформить в виде функции - C++
Составить программу решения поставленной задачи: Вычислить m значений функции f(x) на отрезке . Вычисление величины f(x) оформить в виде...

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

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


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
12.11.2008, 16:02
Ответ Создать тему
Опции темы

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