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

ошибка при составлении функции - C++

Восстановить пароль Регистрация
 
Стас Скорюков
Сообщений: n/a
13.11.2011, 22:15     ошибка при составлении функции #1
Я пытаюсь создать программу, при помощи функции выделяющую из двумерного массива одномерный, который будет состоять из элементов старого, делящихся на 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
// function 5.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "conio.h"
#include "stdlib.h"
 
void del(int *a, int m, int n, int *b, int k);
int pr(int *b, int k);
 
void main()
{
    int A[3][4], B[12];
    printf ("vvedite matritsu A[][]");
    for (int i=0; i<3; i++)
        for (int j=0; j<4; j++)
            scanf ("%d",&A[i][j]);
    for (int i=0; i<3; i++)
    {
        for (int j=0; j<4; j++)
            printf ("%d ",A[i][j]);
        printf ("\n");
    }
    del(&A[0][0],3,4,&B[0],12);
    for (int p = 0; p<12; p++)
    printf ("%d ",B[p]);
    int s=pr(&B[0],12);
    printf ("\n\n\n%d ",s);
    getch();
}
void del(int *a, int m, int n, int *b, int k)
{ 
    int i,j,p;
    for ( i=0;i<m;i++ )
        {
            for ( j=0;j<n;j++)
                if (*(a+i*n+j)%6==0)
                {
                    for (p=0;p<k;p++)
                    *(b + p)=*(a+i*n+j);
                }
        }
}
int pr(int *b, int k)
{
    int s=1;
    for (int p=0;p<k;p++)
    s=s*(*(b+p));
    return s;
}
Но получаю: если 2-мерный имеет вид 1 2 3 4 5 6 7 8 9 10 11 12, то 1-мерный имеет вид 12 12 12 12 12 12 12 12 12 12 12 12.
Подскажите пожалуйста, как можно прийти к желаемому результату. Буду очень благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2011, 22:15     ошибка при составлении функции
Посмотрите здесь:

C++ Ошибка при компиляции виртуальные функции
C++ Ошибка при вызове функции
C++ При обработке функции возникает ошибка
C++ Ошибка при использовании функции-члена
C++ Ошибка при возвращении ссылки из функции
GCC ошибка при вызове функции C++
C++ Ошибка при работе функции в классе
При составлении палиндрома последняя буква переходит на 1 место C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
amor1k
Студент
 Аватар для amor1k
147 / 147 / 24
Регистрация: 18.01.2011
Сообщений: 469
14.11.2011, 01:54     ошибка при составлении функции #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
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
#include "conio.h"
#include "stdlib.h"
#include <stdio.h>
int del(int *a, int m, int n, int *b);
int pr(int *b, int k);
 
void main()
{
    int A[3][4], B[12];
    printf ("vvedite matritsu A[][]");
    for (int i=0; i<3; i++)
        for (int j=0; j<4; j++)
            scanf ("%d",&A[i][j]);
    for (int i=0; i<3; i++)
    {
        for (int j=0; j<4; j++)
            printf ("%d ",A[i][j]);
        printf ("\n");
    }
    int k = del(&A[0][0],3,4,&B[0]);
    for (int p = 0; p<k; p++)
        printf ("%d ",B[p]);
    int s=pr(&B[0],k);
    printf ("\n\n\n%d ",s);
    getch();
}
int del(int *a, int m, int n, int *b)
{ 
    int i,j,p;
    int c = 0;
    for ( i=0;i<m;i++ )
    {
        for ( j=0;j<n;j++)
            if (*(a+i*n+j)%6==0)
            {
                *(b + c)=*(a+i*n+j);
                c++;
            }
    }
    return c;
}
int pr(int *b, int k)
{
    int s=1;
    for (int p=0;p<k;p++)
        s=s*(*(b+p));
    return s;
}
Yandex
Объявления
14.11.2011, 01:54     ошибка при составлении функции
Ответ Создать тему
Опции темы

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