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

Помогите исправить ошибку.. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
MicroL
1 / 1 / 0
Регистрация: 19.02.2012
Сообщений: 16
19.02.2012, 14:45     Помогите исправить ошибку.. #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
#include <iostream>
#include <math.h>
#include <stdlib.h>
 
using namespace std;
float matrix(float *x,float *y){
int i,j,n;
cout<<"vvedite kolichestvo koordinat\n";
cin>>n;
x=(float*)malloc(n* sizeof (float));
y=(float*)malloc(n* sizeof (float));
for (i=0; i<n; i++)
  for (j=0; j<n; j++)
return sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
}
int main()
{int i,j,n;
 
float *a,*b; float *c;
c=(float*)malloc(n* sizeof (float));
cout<<"vedite koordinati X\n";
for (i=0;i<n;i++)
cin>>a[i]; cout<<endl<<"vedite koordinati Y\n";
for (j=0;j<n;j++)
cin>>b[i];cout<<endl;
for (i=0;i<n;i++)
    for (j=0;j<n;j++)
    c[i][j]=matrix(a[i],b[j]);// вот тут ошибка,некорректные типы "float[int]" для индекса массива
// ошибка: cannot convert «float» to «float*» for argument «1» to «float matrix(float*, float*)»|
for (i=0;i<n;i++) cout<<endl;
    for (j=0;j<n;j++)
    cout<<c[i][j]<<" ";//ошибка: некорректные типы «float[int]» для индекса массива
    return 0;
}
Добавлено через 1 минуту
Программа решает эту задачу.
На плоскости заданы своими координатами n точек. Создать матрицу, элементами которой являются расстояние между каждой пару точек
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2012, 14:45     Помогите исправить ошибку..
Посмотрите здесь:

помогите исправить ошибку C++
Помогите исправить ошибку C++
Помогите исправить ошибку C++
C++ Помогите исправить ошибку
Помогите исправить ошибку C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
19.02.2012, 14:49     Помогите исправить ошибку.. #2
C++
1
c[i][j] = 0;
чтобы такая запись была корректной, тип переменной 'c' должен быть не float*, а float**; выделять память под двумерный массив нужно будет тоже не так, как под одномерный.
MicroL
1 / 1 / 0
Регистрация: 19.02.2012
Сообщений: 16
19.02.2012, 14:55  [ТС]     Помогите исправить ошибку.. #3
а как под двумерный массив память выделять??
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
19.02.2012, 15:02     Помогите исправить ошибку.. #4
вот сюда загляните:
Динамическое распределение памяти в функции и его возврат
но там с++ а не си. впрочем аналогия присутствует. вместо new делаете маллоки.
MicroL
1 / 1 / 0
Регистрация: 19.02.2012
Сообщений: 16
19.02.2012, 15:10  [ТС]     Помогите исправить ошибку.. #5
Цитата Сообщение от DU Посмотреть сообщение
вот сюда загляните:
Динамическое распределение памяти в функции и его возврат
но там с++ а не си. впрочем аналогия присутствует. вместо new делаете маллоки.
я на с++ же пишу, тока я не умею пока с new работать.. спасиб
-=ЮрА=-
Заблокирован
Автор FAQ
19.02.2012, 15:42     Помогите исправить ошибку.. #6
Цитата Сообщение от MicroL Посмотреть сообщение
а как под двумерный массив память выделять??
- http://www.cyberforum.ru/faq/thread4...ml#post2464869 прочтите пункт 4.1 и код к нему
По вашему заданию - У вас есть n точек, хорошо вы выделили память под их координаты, далее следуя задание нужно проделать вот что
C++
1
2
3
4
5
6
7
8
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
{
    if(i == j)
        c[i][j] = 0;//Точка совпадает сама с собой надеюсь понятно
    else
        c[i][j] = sqrt(pow(x[i] - x[j],2.0) + pow(y[i] - y[j],2.0));
}
И память под массив длин c должна составить nxn т.е. n - строк и n - столбцов
-=ЮрА=-
Заблокирован
Автор FAQ
19.02.2012, 15:44     Помогите исправить ошибку.. #7
Добавлено через 10 минут
Код С++ реализующий алгоритм
Цитата Сообщение от MicroL Посмотреть сообщение
. Создать матрицу, элементами которой являются расстояние между каждой пару точек
ниже
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
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
 
double getLength(double x1, double y1, double x2, double y2)
{
    return sqrt(pow(x2 - x1,2.0) + pow(y2 - y1,2.0));
}
 
int main()
{
    int i,j,n;
    double *x, *y, **c;
    cout<<"Vvedite kolichestvo koordinat\n";cin>>n;
    x = new double[n];
    y = new double[n];
    c = new double*[n];
    //параллельно с вводом віделяем память под строки с
    for (i = 0; i < n; i++)
    {
        c[i] = new double[n];
        cout<<"Point "<<i + 1<<"\n";
        cout<<"x = ";cin>>x[i];
        cout<<"y = ";cin>>y[i];
    }
    //Считаем матрицу длин
    //и чтоб зря ещё 2 цикла не писать выводим её
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < n; j++)
        {
            if(i == j)
                c[i][j] = 0;//Точка совпадает сама с собой надеюсь понятно
            else
                c[i][j] = getLength(x[i], y[i], x[j], y[j]);
            cout<<setw(6)<<setprecision(3)<<c[i][j]<<" ";
        }
        cout<<"\n";
    }
    system("pause");
    //Память не чищу, приложение работает 1 раз, после его завершения память очистит ОС
    return 0;
}
Миниатюры
Помогите исправить ошибку..  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2014, 12:54     Помогите исправить ошибку..
Еще ссылки по теме:

Помогите исправить ошибку C++
C++ Помогите исправить ошибку.....
C++ Помогите исправить ошибку!

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

Или воспользуйтесь поиском по форуму:
VeraB
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 5
13.06.2014, 12:54     Помогите исправить ошибку.. #8
DU, не подскажите как написать программу, а то не могу понять, что нужно делать и с чего начинать
Найти максимум расстояний между монотонно убывающей и монотонно возрастающей подстроками длиной не менее 3 символов, которые есть во второй строке в инвертированном виде
с++
Yandex
Объявления
13.06.2014, 12:54     Помогите исправить ошибку..
Ответ Создать тему
Опции темы

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