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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.70
xotabs
 Аватар для xotabs
0 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 26
10.11.2008, 22:44     Функции в С++ #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
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();
}
В виде ф-ий оформить:
а) ввод исходных массивов;
б) вывод исходных массивов;
в) обработку массивов в соответствии с заданием;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2008, 22:44     Функции в С++
Посмотрите здесь:

C++ Найти среднее арифметическое значений функции f(x) в точках a, b, (a+b)/2 используя обращение к функции
C++ Табулирование заданной функции и определение максимального и минимального значения функции в таблице
Вычислить m значений функции f(x) на отрезке [a, b]. Вычисление величины f(x) оформить в виде функции C++
Вычислить функции с использованием их разложения в степенной ряд. Функции и Перегрузка функций C++
Найти среднее арифметическое значений функции f(x) в точках а, b, (a+b)/2, используя обращение к функции C++
C++ Используя перегруженные функции и шаблон функции удалить из массива элемент по индексу
Найти среднее арифметическое значений функции f(x) в точках а, b, (a+b)/2, используя обращение к функции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Casper!
 Аватар для 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);
 
}
Это работа с функцией без прототипа, прикольно пишешь через указатели массив заполняешь.
xotabs
 Аватар для xotabs
0 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 26
10.11.2008, 23:09  [ТС]     Функции в С++ #3
Расскажи что такое:
[QUOTE=Casper!;70619]
Код
#include<windows.h>
*****
usingnamespacestd;
А как написать оттдельно в виде функций ввод массива, выполнения действий над ним. И вывод получившегося массива? И ещё чтобы глобальные переменные не использовались в данной программе.
P.S Я что-то вообще про эти функции не понимаю.
Casper!
 Аватар для Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167
10.11.2008, 23:36     Функции в С++ #4
а извени ща исправлю код
using namespace std;
я когда с копировал он все слова слитно ,
а вообще это команда для работы с cout<<;
#include<windows.h>
это осталось со старого проэкта ,она тебе в будущем пригодиться ,даже для таких маленьких вещеи как system("cls"); и для работы с курсором команды SetConsoleCursorPosition.

Ну для работы с массивом можно через указатель.
зделать отдельную функцыю заполнения отдельную вывоод на экан и т.д.
и что ты имеешь в виду глобальные переменные???? или вернее где ты увидел в нашеи програме глобальные переменные?
Casper!
 Аватар для Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167
10.11.2008, 23:44     Функции в С++ #5
На тебе примеры ,я дуаю тебе это пригодиться и еще я тут как бы конспект виду элктронный я правда его не закончил но скажем тебе пока этого с головои =)
Вложения
Тип файла: txt Domawki.txt (55.2 Кб, 388 просмотров)
Тип файла: txt Функции.txt (2.9 Кб, 91 просмотров)
Тип файла: doc С++.doc (535.0 Кб, 145 просмотров)
xotabs
 Аватар для 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();
}
Casper!
 Аватар для 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';
}
xotabs
 Аватар для xotabs
0 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 26
11.11.2008, 14:44  [ТС]     Функции в С++ #8
А что это такое cout<<?
Casper!
 Аватар для 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");(наверное).
только меньше писать и ненадо скобочек
xotabs
 Аватар для 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';
}
А как тогда задержку поставить, чтобы я смог увидеть результат?
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8506 / 2173 / 61
Регистрация: 07.03.2007
Сообщений: 10,844
Завершенные тесты: 1
11.11.2008, 15:35     Функции в С++ #11
используй getch() из conio.h
Casper!
 Аватар для 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 Посмотреть сообщение
А как тогда задержку поставить, чтобы я смог увидеть результат?
что значит посмотреть результат ??? оно же нормально выводит на экран что получилось и пока не нажмешь любую клавишу будет весеть окошко
xotabs
 Аватар для xotabs
0 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 26
11.11.2008, 22:29  [ТС]     Функции в С++ #13
Casper!, читать-то я читал, но на практике допускаю мн-во ошибок.

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

C++ Как будут инициализированы переменные в теле функции и вне тела функции?
Написать две пользовательские функции, эквивалентные стандартной функции strlen C++
C++ Вызов функции внутри другой функции с передачей локальной переменной по ссылке
C++ Различные функции, для которых можно создать массив указателей на функции

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

Или воспользуйтесь поиском по форуму:
xotabs
 Аватар для xotabs
0 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 26
12.11.2008, 16:02  [ТС]     Функции в С++ #15
Цитата Сообщение от Casper! Посмотреть сообщение
даже мои код ???
Да.
Yandex
Объявления
12.11.2008, 16:02     Функции в С++
Ответ Создать тему
Опции темы

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