1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 20
1

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

17.12.2010, 05:55. Показов 2387. Ответов 5
Метки нет (Все метки)

Задача:дан массив структур с координатами точек 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();
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2010, 05:55
Ответы с готовыми решениями:

Функции,файлы, структуры
Для хранения данных о планшетных сканерах описать структура вида: struct scan_info{ char model;...

структуры, функции, файлы
Доброго времени суток всем, пожалуйста помогите! 1. В одном списке информация про студентов,...

Структуры, функции и файлы
Для хранения данных о ноутбуках описать структуру вида, описанного в варианте 10. Написать...

Структуры, функции и файлы
Для хранения данных о цветных планшетных сканерах описать структуру вида: struct scan_info{ ...

5
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
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; }
0
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 20
17.12.2010, 07:20  [ТС] 3
vitaly1981,
там можно и так и так,
ошибка все равно не исчезает((
0
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
17.12.2010, 07:26 4
nondeadlollipop, напиши конкретный текст ошибки

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

Добавлено через 2 минуты
Ты как две структуры вообще сравниваешь? Правильно что на знак сравнения ругается.
0
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 пыталась отладить
я же не две структуры сравнить пытаюсь,а элементы в каждой структуре
или я что-то недопонимаю(
0
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
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)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2010, 08:17
Помогаю со студенческими работами здесь

Функции,файлы, структуры
Для хранения данных о планшетных сканерах описать структура вида: struct scan_info{ char model;...

Оператор if и структуры. Возвращение структуры из функции
Здравствуйте, имеется такая вот функция. void InputStructEmployee (int StructSize) { ...

Структуры и файлы
Создать файл &lt;&lt;point&gt;&gt;, который содержит параметры для 12 точек в пространстве. Параметрами каждой...

Структуры и файлы
Ребята, спасите!!! Используя структурный тип данных, создать базу данных и организовать с ней...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru