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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Массив структур Aeroflot. Сортировка, вывод. http://www.cyberforum.ru/cpp-beginners/thread705956.html
Помогите сделать задание в С++ 1.Описать структуру с именем Aeroflot, содержащую следующие поля: dest – название пункта назначения рейса, number – номер рейса, type – тип самолета. Написать программу, выполняющую ввод с клавиатуры данных в массив Aeroport, состоящий из 7 структур типа Aeroflot. Записи должны быть упорядочены по возрастанию номера рейса. Вывести на экран номера рейсов и типы...
C++ Класс Invoice (накладная) Вообщем проблема в том , что я не могу разобрать что и куда , подобного класса в полном описании найти не могу сама задача вбивает меня в ступор , если у кого будет время прошу помогите кодом с коментами. Собственно задача Создайте класс Invoice (накладная), который мог бы использоваться на складе хозяйственных товаров для представления накладных на товары, отпускаемые со склада. Класс... http://www.cyberforum.ru/cpp-beginners/thread705951.html
C++ Хеш-таблицы: string subscript out of range
#include <iostream> #include <string.h> #include <string> using namespace std; typedef string nametype; struct celltype { nametype element; celltype* next;
C++ Двумерный массив. Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент.
Дано целочисленная прямоугольная матрица. Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент. Характеристикой строки целочисленной матрицы назовем сумму ее отрицательное парных элементов. Переставляя строки заданной матрицы, расположить их в соответствии со убыванию характеристик. Пожалуйста помогите!! Спасибо...
C++ Вычислить точную сумму ряда http://www.cyberforum.ru/cpp-beginners/thread705935.html
Всем привет!!! Нужна помощь в дописание программы. Суть такова: Нужно вычислить точную сумму ряда. Результат представить в виде обыкновенной дроби. Числовой ряд вида 1+1/n1+1/n2..., где n1,n2...натуральные числа. #include <stdio.h> #include <string.h> char s,c,B; int pos,n,A,np; void start() { printf ("Введите выражение s=");
C++ перевести код из паскаля в С++ program Terri; uses crt; const m=100; // Максимальный размер массива var mg:array of byte; // Матрица смежности stack:array of word; // Стек i,j:word; column,row:word; sp:word; // номер последнего элемента в стеке vs,vf:word; подробнее

Показать сообщение отдельно
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,898
Записей в блоге: 2
Завершенные тесты: 1
24.11.2012, 01:31     Динамические массивы. Ошибка в процессе работы программы.
Судя по Вашему коду, Вы не умеете работать с указателями совершенно, так что мой совет - книжку в руки и учиться!!!

Исправил код, все изменения касаются только указателей. Не стал менять прототипы функций, изменил только содержимое в соответствии с тем, что Вы передаете, и изменил объявление 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;
}
 
Текущее время: 21:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru