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

Вызов фунуции - C++

Восстановить пароль Регистрация
 
superNOOB
3 / 3 / 0
Регистрация: 04.10.2013
Сообщений: 37
19.12.2013, 05:33     Вызов фунуции #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
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <iostream>
#include <stdio.h>
#include <conio.h>
 
using namespace std;
 
int main()
 
{
    int x, y, i, j; // описание размерностей массива
 
 
    printf ("Введите кол-во строк и столбцов: \n");
    scanf ("%d",&x);
    scanf ("%d",&y);
 
    // объявление двумерного динамического массива на x элементов:
  float **a = new float* [x];
    for (int i = 0; i < x; ++i)
        a[i] = new float [y];
 
 
   for ( i = 0; i < x; ++i) {
    for ( j = 0; j < y; ++j) {
        // Заполнение массива и вывод значений его элементов
           a[i][j]=(i+j*(5-i));
        }
    }
 
    int b[x];
    int kol = y;
  for(int i = 0; i < y; ++i) {
    for(int j = 0; j < x; ++j) {
      if ( a[j][i] == 0 ) { --kol; break; }
    }
  }
 
  printf ("\n Вывод исходного массива: \n");
  for( i = 0; i < x; ++i) {
    printf ("     \n");
    for( j = 0; j < y; ++j)  { printf ("%g",a[i][j]); printf ("  ");}
     }
 
  printf ("\n кол-во безнулевых столбцов =  %d \n",kol);
 
  //считаем сумму положительных чётных элементов по строке и записываем в массив b[X]
  for(int i = 0; i < x; ++i) {
    b[i] = 0 ;
    for(int j = 0; j < y; ++j) {
     int z = a[i][j];
     if ((z > 0) && !(z % 2)) {(b[i] = b[i] + z);}
    }
  }
 
  printf ("\n Вывод массива b : \n");
  for( i = 0; i < x; ++i) {
      printf ("%d",b[i]); printf ("  ");
     }
 
 
  //сортируем массив a[X][Y] в порядке возрастания b[X]
  for(int i = 0; i < x - 1; ++i) {
     int min = i;
     for (int j = i + 1; j < x; ++j)
        if ( b[j] < b[min] ) min = j;
     int z = b[i];
     b[i] = b[min];
     b[min] = z;
 
    for(int k = 0; k < y; ++k) {
        int z = a[i][k];
        a[i][k] = a[min][k];
        a[min][k] = z;
        }
  }
 
  printf ("\n Вывод упорядоченного массива: \n");
 
  for( i = 0; i < x; ++i) {
    printf ("     \n");
    for( j = 0; j < y; ++j)  { printf ("%g",+a[i][j]); printf (" ");
        if (a[i][j] > 0) && !(a[i][j] % 2) { printf ();}
 
        }
 
     }
 
    delete [] a; // очистка памяти
 
    char v = getch();
    if(v == 26)
    {
    return 0;
    }
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2013, 05:33     Вызов фунуции
Посмотрите здесь:

C++ Вызов функции
C++ фунуции
Вызов функций C++
C++ Вызов функции в C++
Вызов деструктора C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
VladislavTepes
 Аватар для VladislavTepes
78 / 78 / 5
Регистрация: 27.06.2012
Сообщений: 555
Записей в блоге: 1
19.12.2013, 06:58     Вызов фунуции #2
superNOOB, какой функции? Я не вижу здесь больше функций кроме main.
superNOOB
3 / 3 / 0
Регистрация: 04.10.2013
Сообщений: 37
19.12.2013, 07:03  [ТС]     Вызов фунуции #3
Нужно оптимально объединить одни и те же действия в функции и оставить только их вызов, но у меня, помимо ошибки в if ((a[i][j] > 0) && !(a[i][j] % 2)) { printf ();}//!, ничего не выходит, немецкий в голове и социология...
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
19.12.2013, 07:58     Вызов фунуции #4
superNOOB,
раз уж Вы позарились на C++, то давайте учиться писать именно на C++
это
C++
1
2
#include <stdio.h>
#include <conio.h>
шлак, надо
C++
1
#include <cstdio>
а про conio.h вообще забудьте как таковой, это рудимент

да и вообще зачем stdio.h? printf/scanf? выкиньте это, это не C++, у нас есть cout/cin
так что инклуды кроме <iostream> на свалку

далее - весь код перепахиваем на исключение printf/scanf c заменой на православные cout/cin

желательно (но не обязательно) вычеркнуть всякие new/delete и заменить это на контейнеры (а в идеале на умные указатели), в частности "float **a = new float* [x];" ну блин... это ужас, не используйте float вообще, только double, контейнер std::vector< vector<double> > там или что-то в этом духе должно быть вместо всей этой похабели

как вы думаете легко ли в кроссплатформенном С++ писать такую штуку
C++
1
2
char v = getch();
    if(v == 26)
отвечу - нет, именно из-за такой фигни мало нормальных программистов C++, учат вот такой ерунде, это плохой стиль, не делайте так никогда, так же как и не используйте float

если займётесь нормально C++ по этим советам - то обращайтесь, обсудим ваши несуществующие функции
Yandex
Объявления
19.12.2013, 07:58     Вызов фунуции
Ответ Создать тему
Опции темы

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