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

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

Войти
Регистрация
Восстановить пароль
 
Dot_mmoru
25 / 25 / 4
Регистрация: 16.10.2012
Сообщений: 162
#1

Динамические массивы. Ошибка в процессе работы программы. - C++

22.11.2012, 21:07. Просмотров 296. Ответов 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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include<iostream>
#include<math.h>
#include <stdio.h>
#include <conio.h> 
#include<cstdlib>
 
using namespace std;
 
    void Vvod (double ** x, int n);
    void Print ( double ** x,int n);
    double Prod( double ** x, int n);
int main ()
{
int n;
    cout<<"VVEDITE N:"<<endl;
    cin>>n;
    double ** x;
    
    Vvod(x,n);
    Print (x,n);
    
double g;
g= Prod(x,n);
cout <<"g="<<g<<endl;
 
getch();
return 0;
}
void Vvod (double ** x,int n)
{
int i;
x= new double*[n];
for (i=0;i<n;i++)
*x[i]=pow(i+1,1/2.0)-log(i+1.0);
}
 
void Print ( double ** x,int n)
{
    int i;
    cout <<"Massiv X"<<endl;
for (i=0;i<n;i++)
 
cout <<*x[i]<<" ";
 
cout<<endl;
}
 
double Prod( double ** x,const int n)
{double sumplus=0,summinus=0;
    for (int i=0;i<n;i++)
    {
    if (*x[i]<0)
summinus+=*x[i];
    }
    for (int i=0;i<n;i++)
    {
    if (*x[i]>=0)
sumplus+=*x[i];
    }
    double P=sumplus*summinus;
return P;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2012, 21:07     Динамические массивы. Ошибка в процессе работы программы.
Посмотрите здесь:

Указать тип массива в процессе работы программы - C++
Доброго времени суток, господа! Необходимо создать массив, тип данных которого будет задаваться в зависимости от значения переменной (1, 2...

В чем ошибка? Динамические массивы - C++
Дан массив целых чисел из n элементов. Вставить нуль после первого нечетного элемента и единицу перед последним четным элементом. ...

Командная строка программы С. Динамические массивы. Обработка символьных и строковых данных - C++
Задание: С клавиатуры вводятся четыре массива слов: - существительные в именительном падеже единственного числа(СТОЛЯР- ...

Динамические массивы. не могу понять в чем ошибка - C++
из целочисленного массива x все элементы превышающие заданное число a записать в массив y, затем удалить эти элементы из массива х. найти...

Ошибка в завершении работы программы - C++
... char s1; std::cout&lt;&lt;&quot;Enter the file name\n&quot;; std::cin&gt;&gt;s1; if ((f=fopen(s1,&quot;r&quot;))==NULL) { perror(&quot;&quot;); ...

Ошибка при завершении работы программы - C++
Написал программу, но при завершении выдает ошибку. Помогите понять с чем это связанно?

Ошибка при написание программы работы с файлами - C++
Очень прошу, помогите разобраться и устранить ошибку, не могу понять что не так. #define _CRT_SECURE_NO_WARNINGS #define...

Прерывание программы в процессе выполнения - C++
Доброго времени суток! Подскажите, есть ли возможность прерывать программу во время выполнения? Т.е. у меня в программе есть цикл,...

Выводятся непонятные сообщения в процессе выполнения программы - C++
Всем доброго дня ! Подскажите пожалуйста , почему при выводе строки (160) cout&lt;&lt;&quot;\n******* &quot;&lt;&lt;EmptyClass.GetName()&lt;&lt;&quot; is...

динамические массивы - C++
Задали квадратную матрицу, все элементы которой равны единице. Написать функцию void func (int ** arr, int n), которая заполняет...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bsod
28 / 12 / 2
Регистрация: 30.11.2011
Сообщений: 44
24.11.2012, 01:05     Динамические массивы. Ошибка в процессе работы программы. #2
а что эта программа вообще делает?
Croessmah
Модератор
Эксперт CЭксперт С++
13052 / 7315 / 814
Регистрация: 27.09.2012
Сообщений: 18,052
Записей в блоге: 3
Завершенные тесты: 1
24.11.2012, 01:31     Динамические массивы. Ошибка в процессе работы программы. #3
Судя по Вашему коду, Вы не умеете работать с указателями совершенно, так что мой совет - книжку в руки и учиться!!!

Исправил код, все изменения касаются только указателей. Не стал менять прототипы функций, изменил только содержимое в соответствии с тем, что Вы передаете, и изменил объявление x и способ вызова функций
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
#include<iostream>
#include<math.h>
#include <stdio.h>
#include <conio.h> 
#include<cstdlib>
 
using namespace std;
 
    void Vvod (double ** x, int n);
    void Print ( double ** x,int n);
    double Prod( double ** x, int n);
int main ()
{
int n;
    cout<<"VVEDITE N:"<<endl;
    cin>>n;
    double * x=0;
    
    Vvod(&x,n);
    Print (&x,n);
    
double g;
g= Prod(&x,n);
cout <<"g="<<g<<endl;
 
getch();
return 0;
}
void Vvod (double ** x,int n)//Нужно передать адрес указателя, а не копию самого указателя
{
int i;
*x= new double[n];
for (i=0;i<n;i++)
(*x)[i]=pow(i+1,1./2.0)-log(i+1.0);//
}
 
void Print ( double ** x,int n)
{
    int i;
    cout <<"Massiv X"<<endl;
for (i=0;i<n;i++)
 
cout <<(*x)[i]<<" ";
 
cout<<endl;
}
 
double Prod( double ** x,const int n)
{double sumplus=0,summinus=0;
    for (int i=0;i<n;i++)
    {
    if ((*x)[i]<0)
summinus+=(*x)[i];
    }
    for (int i=0;i<n;i++)
    {
    if ((*x)[i]>=0)
sumplus+=(*x)[i];
    }
    double P=sumplus*summinus;
return P;
}
Ответ Создать тему
Опции темы

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