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

Структуры,файлы,функции - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 5.00
nondeadlollipop
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 20
17.12.2010, 05:55     Структуры,файлы,функции #1
Задача:дан массив структур с координатами точек x и y соответственно.При помощи функций определить:
1)среднюю точку(среднее арифметическое соответствующих минимальной и максимальной координат точек)
2)расстояние от каждой точки до средней
3)отсортировать по расстоянию
Причем нужно сначала создать файл,заполнить его,потом читать из файла.У меня две ошибки вылетают,связанные с pow и ">"-знаком в 82 строке.Помогите разобраться,пожалуйста.

вышел такой код:
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
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <iomanip>
#include <math.h>
#define max 100
using namespace std;
 
 
struct toc
{
    int  x;
    int y;
    int m,n;
}a[max],tc[max];
 
FILE *f;
 
void vvod(int &n)
{
    int i;
f=fopen("txt.txt","w+");
cout<<"Chislo ";
cin>>n;
for(i=0;i<n;i++)
{cout<<"Tochka "<<i<<endl;
scanf("%d %d",&a[i].x,&a[i].y);
}
fclose(f);
}
 
void centr(toc a[],int &srx,int &sry)
{
    f=fopen("txt.txt","r+");
    int m=0,i=0;
    int xmin,xmax,ymin,ymax;
        xmin=xmax=ymin=ymax=0;
    //srx=0;
    //sry=0;
    while(!feof(f))
    {
        fscanf(f,"%d",&a[i].x);
        fscanf(f,"%d",&a[i].y);
        i++;
    }
    fclose(f);
    m=i;
    for(i=0;i<m;i++)
    {
        if(a[i].x>xmax && a[i].y>ymax) xmax=a[i].x,ymax=a[i].y;
        if(a[i].x<xmin && a[i].y<ymin) xmin=a[i].x,ymin=a[i].y;
    }           
    srx=(xmin+xmax)/2;  sry=(ymin+ymax)/2;
    cout<<"srx= "<<srx<<endl<<"sry= "<<sry<<endl;
 
}
void pas(toc a[],int srx,int sry,toc tc[])
{
    f=fopen("txt.txt","r+");
    int i,*dx,*dy,m=0;
    while(!feof(f))
    {
        fscanf(f,"%d",&a[i].x);
        fscanf(f,"%d",&a[i].y);
        i++;
    }
    fclose(f);
    m=i;
    for(i=0;i<m;i++){
    *dx=a[i].x-srx;
    *dy=a[i].y-sry;
    tc[i]=sqrt(pow(dx,2)+pow(dy,2));
    printf("%d",&tc[i]);}
    fclose(f);
}
 
void sort(int n,toc tc[])
{
    toc buf;
    for(int i=1;i<n;i++)
        {for(int j=0;j<i;j++) 
            if(tc[j] > tc[j+1]) buf=tc[j],tc[j]=tc[j+1],tc[j+1]=buf;
    
    printf("%d",&tc[i]);}
}
 
void main()
{
    int n,srx,sry;
    vvod(n);
    centr(a,srx,sry);
    pas(a,srx,sry,tc);
    sort(n,tc);
getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2010, 05:55     Структуры,файлы,функции
Посмотрите здесь:

Структуры и файлы C++
C++ Структуры и файлы
C++ структуры, функции, файлы
Структуры и файлы C++
C++ Функции,файлы, структуры
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
17.12.2010, 07:16     Структуры,файлы,функции #2
А здесь разве не точки с запятой должны быть вместо запятых?
if(tc[j] > tc[j+1]) buf=tc[j],tc[j]=tc[j+1],tc[j+1]=buf;

Добавлено через 1 минуту
может так лучше
C
1
if(tc[j] > tc[j+1]) { buf=tc[j];tc[j]=tc[j+1];tc[j+1]=buf; }
nondeadlollipop
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 20
17.12.2010, 07:20  [ТС]     Структуры,файлы,функции #3
vitaly1981,
там можно и так и так,
ошибка все равно не исчезает((
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
17.12.2010, 07:26     Структуры,файлы,функции #4
nondeadlollipop, напиши конкретный текст ошибки

Добавлено через 2 минуты
Так, а где у тебя определена процедура сравнения типа toc ???

Добавлено через 2 минуты
Ты как две структуры вообще сравниваешь? Правильно что на знак сравнения ругается.
nondeadlollipop
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 20
17.12.2010, 07:47  [ТС]     Структуры,файлы,функции #5
Ошибка 9 error C2665: pow: ни одна из 6 перегрузок не может преобразовать все типы аргументов 72
Ошибка 10 error C2665: pow: ни одна из 6 перегрузок не может преобразовать все типы аргументов 72
Ошибка 14 error C2676: бинарный ">": "toc" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору 82
Ошибка 12 error C2784: bool std::operator >(const std::_Revranit<_RanIt,_Base> &,const std::_Revranit<_RanIt2,_Base2> &): не удалось вывести аргумент шаблон для "const std::_Revranit<_RanIt,_Base> &" из "toc" 82
Ошибка 13 error C2784: bool std::operator >(const std:air<_Ty1,_Ty2> &,const std:air<_Ty1,_Ty2> &): не удалось вывести аргумент шаблон для "const std:air<_Ty1,_Ty2> &" из "toc" 82
Ошибка 11 error C2784: bool std::operator >(const std::reverse_iterator<_RanIt> &,const std::reverse_iterator<_RanIt2> &): не удалось вывести аргумент шаблон для "const std::reverse_iterator<_RanIt> &" из "toc" 82
17 IntelliSense: отсутствует оператор ">", соответствующий этим операндам f:\123\123\123.cpp 82
15 IntelliSense: отсутствуют экземпляры перегруженная функция "pow", соответствующие списку аргументов 72
16 IntelliSense: отсутствуют экземпляры перегруженная функция "pow", соответствующие списку аргументов 72


вот)это я через f10 пыталась отладить
я же не две структуры сравнить пытаюсь,а элементы в каждой структуре
или я что-то недопонимаю(
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
17.12.2010, 08:17     Структуры,файлы,функции #6
C
1
if(tc[j] > tc[j+1])
Сравниваются две структуры, никак не элементы, если нужно сравнить элементы то сравнивай например так:
C
1
if(tc[j].x > tc[j+1].x)
Добавлено через 3 минуты
C
1
2
3
int i,*dx,*dy,m=0;
 
pow(dx,2)
Тоже ошибка, насколько помню в pow передается не адрес а значение переменной, например так:
C
1
2
3
int i,*dx,*dy,m=0;
 
pow(*dx,2)
Yandex
Объявления
17.12.2010, 08:17     Структуры,файлы,функции
Ответ Создать тему
Опции темы

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