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

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

Войти
Регистрация
Восстановить пароль
 
 
ГузелькаС
5 / 5 / 0
Регистрация: 04.12.2011
Сообщений: 178
#1

не могу закончить программу. основу (как я считаю) я написала. доработать не получается - C++

05.04.2012, 13:26. Просмотров 1074. Ответов 21
Метки нет (Все метки)

уменьшить элементы столбца на величину их индекса. вывести на экран сумму нечетных элементов в столбце. промежуточная функция: выполнить действия для столбцов, у которых первый элемент не равен нулю.


ошибка : error C2109: для индекса требуется массив или указатель

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
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
// создать двумерный массив 3х4
//ввод элементов
void massiv()
{ int mas[3][4];
    for (int i=0; i<3; i++)
    for (int j=0; j<4; j++)
    {
        scanf("%d",&mas[i][j]);
    }
}
 
//уменьшить элементы столбца на величину их индекса
void umenshenie (int mas)
{for (int i1=0; i1<3; i1++)
    mas[i1]=mas[i1]-i1;
}
//количество нечетных элементов
void kol(int mas)
{int i, s;
s=0;
for (int i=0; i<3; i++)
    for (int j=0; j<4; j++)
    {
        if (mas[i][j]%2!=0)
            s+=mas[i][j];
    }
    printf("%d\n",s);
}
 
void f(int mas) 
{for (int j=0; j<4; j++)
    if (mas[0][j]!=0) 
    {
        umenshenie(mas);
        kol(mas);
    }
}
void print(int mas) 
{
    int i,j;
    for (i=0;i<3;i++)
    for (j=0; j<4; j++)
        printf("%d",mas[i][j]);
    puts("\n");
}
 
int main()
{int mas;
    massiv();
    f(mas);
    print(mas);
    getch();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2012, 13:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос не могу закончить программу. основу (как я считаю) я написала. доработать не получается (C++):

Не могу закончить программу - C++
Сделал часть программы,но не получается никак сделать 2 часть: Выведите список студентов, которым будет предоставляться места в...

Не могу доработать программу - C++
Вообщем такое задание :Описать структуру с именем Order, содержащую следующие поля: plat-расчетный счет плательщика, pol- расчетный счет...

Написала программу, выводит ошибку, подскажите как исправить - C++
Вот сама задача:Вычислить и вывести на экран значения функции y = f(x) в точках x0=xнач, x1=x0+h, x2=x1+h, … xN = xкон, где h =(xкон –...

Написала программу, но не знаю, как анализатор добавить в нее - C++
#include&lt;iostream&gt; int main() { double da, db, dc; char op; std::cout &lt;&lt; &quot;Введите 1 число: &quot;; std::cin &gt;&gt; da; ...

Написала программу,но работает не так, как нужно. Что исправить? - C++
Дано простое число. Написать функцию, которая находит следующее простое число. Никаких ошибок и предупреждений не выводит. Но ,допустим,...

Я написала программу, но не получается. в чем моя ошибка? - Pascal
даны целые числа x..x,y..y. вычислите u: u=\begin{cases}\sum_{i=1}^{20}x_i^2 &amp; \text{, if } \sum_{i=1}^{20}x_iy_i\ &gt;\ 0\\\\...

21
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
05.04.2012, 16:57 #16
Цитата Сообщение от a.n.o.n.i.m Посмотреть сообщение
#include <conio.h>
Это не стандартная библиотека, и в некоторых компиляторах ее просто нет. Советую заменить ее функции на аналогичные из стандартных библиотек
0
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 529
05.04.2012, 16:57 #17
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
97
98
99
100
101
//#include "stdafx.h"//разкоментируй если на виджуал студио будешь запускать
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
void umenschenie(int **A,int m,int n,int i,int j)
{
   printf("\n\n\tMatrix sort. A\n\n");
   for(i=0;i<m;i++)
   {
          for(j=0;j<n;j++)
          
                         A[i][j]=A[i][j]-(j+1);
          
   }
   for(i=0;i<m;i++)
   {
          for(j=0;j<n;j++)
          {
                      printf("%d ",A[i][j]);
          }
          printf("\n");
   }
   return;  
}
 
void sum_elements(int **A,int m,int n,int i,int j)
{
   printf("\nSumma nechetnyh elements v stolbcah matrix A\n\n");
   for(j=0;j<n;j++)
   {
          int sum=0;
          for(i=0;i<m;i++)
          {
                          if(A[i][j]%2!=0)
                          {
                                    sum+=A[i][j];
                          }
                      
          }
             printf("%d ",sum);
   }
   return;
}
 
int** vvod(int **A,int m,int n,int i,int j)
{
    printf("\nVvedite elementy matrix A\n\n");
   for(i=0;i<m;i++)
   {
          for(j=0;j<n;j++)
          {
                      while(!fflush(stdin)&&printf("A[%d][%d] = ",i+1,j+1)&&!scanf("%i",&A[i][j]));
          }
   }
   system("cls");
   printf("\tMatrix A\n\n");
   for(i=0;i<m;i++)
   {
          for(j=0;j<n;j++)
          {
                      printf("%d ",A[i][j]);
          }
          printf("\n");
   }
    return A;
}
 
void freemem(int **A,int m,int n,int i)
{
     for(i=0; i<m;i++)
     {
           free(A[i]);
     }
     free(A);
     return;
}
 
int** newpam(int **A,int m,int n,int i)
{
      A = (int**)malloc(m*sizeof(int));
      for(i=0; i<m;i++)
      {
          A[i] = (int*)malloc(n*sizeof(int));
      }   
      return A;
}
 
int main()
{
   int n,i,j,m;
   while(!fflush(stdin)&&printf("Vvedite kolichestvo strok = ")&&!scanf("%i",&m));
   while(!fflush(stdin)&&printf("Vvedite kolichestvo stolbcov = ")&&!scanf("%i",&n));
   int **A=newpam(A,m,n,i); 
   vvod(A,m,n,i,j);
   sum_elements(A,m,n,i,j);
   umenschenie(A,m,n,i,j);
   freemem (A,m,n,i); 
   getch();
   return 0;
}
С функциями
Этот будет работать,проверяй
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
05.04.2012, 17:01 #18
alexey31415,
C++
1
2
3
4
5
6
7
8
9
10
Array::Array(int SIZE1,int SIZE2)
        : size1( SIZE1 ), size2( SIZE2 ), p( new int*[ size1 ])
{
    for(int i = 0;i < size1;i++) {
        p[i] = new int[size2];//каждому указателю из массива присваивается адрес на массив целых чисел
 
        for ( int j = 0; j < size2; j++ )
            p[ i ][ j ] = 0;
    }
}
В предыдущем примере я поспешил, и неправильно написал, нужно было изменить на
C++
1
p = new int*[size1];
а не на
C++
1
**p = new int*[size1];
0
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
05.04.2012, 17:07 #19
Цитата Сообщение от Toshkarik Посмотреть сообщение
нужно было изменить на
спасибо,но я уже заметил сам,а теперь вопрос,почему программа запускается,я ввожу значения,а когда должна выполняться функция calc(),то программа прерывается
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<new>
#include<iostream>
using std::cin;
using std::cout;
 
 
#include "Array.h"
 
Array::Array(int SIZE1,int SIZE2)
{
    size1 = SIZE1;//количество строк
    size2 = SIZE2;//количество столбцов
    p = new int*[size1];//создаём массив из указателей на int
    for(int i = 0;i < size1;i++)
    {
        p[i] = new int[size2];//каждому указателю из массива присваивается адрес на массив целых чисел
 
    for(int j = 0;j < size1;j++)
        p[i][j] = 0;
 
    }
}
 
Array::~Array()//деструктор,уничтожает объекты класса
{
    for(int i = 0;i < size1;i++)
        delete []p[i];
 
    delete []p;
 
}
 
void Array::enter()//ввод значений
{
    cout << "Enter the values:\n";
    for(int i = 0;i < size1;i++)
    {
        for(int j = 0;j < size2;j++)
        {
            cin >> p[i][j];
        }
    }
}
 
void Array::diff(int column)//вводим номер столбца и его элементы уменьшаются
{
    for(int i = 0;i < size2;i++)
        p[i][column] = p[i][column] - i; 
}
 
int Array::calc()//считаем сумму нечётных элементов
{
    int total = 0;
    for(int i = 0;i < size1;i++)
    {
        for(int j = 0;j < size2;j++)
        {
            if(p[i][j] %2 != 0)
                total +=p[i][j];
        }
    }
    return total;
}
 
void Array::print()//вывод значений
{
    for(int i = 0;i < size1;i++)
    {
        for(int j = 0;j < size2;j++)
        {
            cout << p[i][j] << ' ';
        }
        cout << '\n';
    }
}
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
05.04.2012, 17:15 #20
Цитата Сообщение от alexey31415 Посмотреть сообщение
for(int i = 0;i < size2;i++)
* * * * p[i][column] = p[i][column] - i;
Из за этого. Счет строк у вас идет до size1 а не до size2. Поменяйте на size1 и будет нормально работать. Только я не проверял достоверность результатов, проверите сами
1
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
05.04.2012, 17:17 #21
Цитата Сообщение от alexey31415 Посмотреть сообщение
создайте класс,каждый объект которого имеет массив целочисленных значений и функции для обработки этого массива
и ещё,передавайте функции не число,а указатель на массив
Вот как раз использование классов для решения простейших задач, а тем более использование классов до того как освоено процедурное программирование в стиле Си, как раз и создаёт все чудовищные КРЕСТОПРОБЛЕМЫ.
0
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
05.04.2012, 17:53 #22
Toshkarik ,получилось всё,спасибо
из-за вот таких вот мелочей порой сидишь часми и не знаешь где ошибка
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2012, 17:53
Привет! Вот еще темы с ответами:

Написала программу на Haskell, не могу найти ошибку - Haskell
Добрый вечер! На Haskell нужно было написать простую программку.(только начали учить), написала.Но не запускается.Помогите найти...

Вывод информации. Не получается закончить программу в паскале - Turbo Pascal
Всем привет. Задача такая: Составить программу для вычисления длин высот треугольника, у которого длины сторон a,b,c ( целые числа...

Не могу закончить программу - Lazarus
Есть код авторизации для подключения к базе данных, необходимо его закончить, потому как при вводе неправильного логина, пароля или хоста,...

Не могу закончить программу на Delphi - Delphi
Программа: ввести строку символов, которая заканчивается точкой. Каждый нечетный символ &quot;q&quot; удалить, а четный-удвоить. Все, что у меня...


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

Или воспользуйтесь поиском по форуму:
22
Yandex
Объявления
05.04.2012, 17:53
Ответ Создать тему
Опции темы

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