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

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

Войти
Регистрация
Восстановить пароль
 
lamp
0 / 0 / 0
Регистрация: 26.06.2015
Сообщений: 16
#1

Объявить структуру содержащую данные для построения круга - C++

26.06.2015, 09:23. Просмотров 256. Ответов 5
Метки нет (Все метки)

Задача: описать переменную, которая содержит все данные для построения круга в декартовой системе координат. Записать в файл информацию о нескольких кругах. Выбрать круги, площадь которых меньше S.

Написал код, но почему-то программа работает неправильно и все время выдает значение 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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include<stdio.h>
#include <io.h>
#include <string.h>
#include <fstream>
#include <iostream>
 
using namespace std;
 int main()
{ struct krugi
     {
        float radius;
        float x;
        float y;
        int nomer;
        };
    krugi krug;
    int i,n;
    FILE *in1;
    const char* file_name1="krugi2.txt";
    in1=fopen(file_name1, "wb");
    cout<<"vvedite kol-vo krugov\n";
    cin>>n;
    printf("\ninformacia o krugax: radius, x, y\n");
    for (i=0;i<n;i++)
    {
    cout << "\ninformacia o "<<i+1<<" kruge:\n";
    printf ("nomer ");
    scanf("%d",&krug.nomer);
    printf ("radius ");
    scanf("%d",&krug.radius);
    printf ("x ");
    scanf("%d",&krug.x);
    printf ("y ");
    scanf("%d",&krug.y);
    fwrite(&krug, sizeof(krugi), 1, in1);
 
 }
 fclose (in1);
float S;
 FILE *in2;
 const char* file_name="krugi.txt";
 in2=fopen(file_name,"rb");
 printf("vvedite zadannnyy ploshad ");
 scanf("%f",&S);
 while (!feof (in2))
 {
     fread(&krug, sizeof (krugi), 1,in2);
     if(feof (in2)) break;
 if(3.14*(krug.radius)*(krug.radius)<=S) cout<<krug.nomer;
 }
 fclose(in2);
 return 0;
 
 
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2015, 09:23     Объявить структуру содержащую данные для построения круга
Посмотрите здесь:

Напишите программу, содержащую структуру автомобиль. C++
C++ Напишите программу, содержащую структуру
Почему нельзя объявить указатель на шаблонную структуру? C++
C++ В програме опишите структуру, содержащую данные
C++ Описать переменную круг, в которой содержатся все дан* ные для построения круга в декартовой системе координат
C++ Разработать структуру с именем ZNAK, содержащую поля
Создать структуру, содержащую телефонный справочник C++
Описать структуру с именем TRAIN, содержащую поля C++
C++ Как правильно объявить структуру
Объявить указатель на структуру внутри структуры C++
C++ Создать структуру, содержащую сведения об абитуриентах
Создать структуру Hotel, содержащую следующие данные C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12730 / 7190 / 802
Регистрация: 27.09.2012
Сообщений: 17,739
Записей в блоге: 2
Завершенные тесты: 1
26.06.2015, 10:25     Объявить структуру содержащую данные для построения круга #2
C++
1
2
3
4
5
    scanf("%d",&krug.radius);
    printf ("x ");
    scanf("%d",&krug.x);
    printf ("y ");
    scanf("%d",&krug.y);
Для float - %f
lamp
0 / 0 / 0
Регистрация: 26.06.2015
Сообщений: 16
26.06.2015, 10:53  [ТС]     Объявить структуру содержащую данные для построения круга #3
Спасибо, но программа все также работает неправильно.
LexShchi
0 / 0 / 2
Регистрация: 18.04.2015
Сообщений: 29
26.06.2015, 12:04     Объявить структуру содержащую данные для построения круга #4
Вот мой вариант. Немного по-другому сделано, но работает. (писалось в NetBeans в Ubuntu). Делалось быстро.

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
#include <iostream>
#include <fstream>
 
 
using namespace std;
float PI=3.14;
 
/*
 * 
 */
struct cercle{
    int radius;
    int x;
    int y;
};
 
int main(int argc, char** argv) {
    ifstream fin("cercles.txt");
    if (!fin)cout<<"Невозможно открыть файл"<<endl;
    cercle * krugl = new cercle [10];
    for (int z=0;z<10;z++){
        fin>>krugl[z].x;
        fin>>krugl[z].y;
        fin>>krugl[z].radius;
    }
    for (int z=0;z<2;z++){
        cout<<krugl[z].x<<endl;
        cout<<krugl[z].y<<endl;
        cout<<krugl[z].radius<<endl;
    }
    
    int count, x, y, r;
    cout<<"Введите информацию о кругах: "<<endl;
    cout<<"Введите количество кругов: ";
    cin>>count;
    cercle * krugi = new cercle [count]; //динамический массив для хранения данных по кругам
        for (int z=0;z<count;z++){                           //цикл ввода данных по кругам
            cout<<"Введиет координеты цента "<<z+1<<" круга: ";
            cin>>x>>y;
            cout<<"Введите радиус "<<z+1<< " круга: ";
            cin>>r;
            krugi[z].x=x;
            krugi[z].y=y;
            krugi[z].radius=r;
        }
    ofstream fout ("cercles.txt");
    for (int s=0;s<count;s++){
        fout<<krugi[s].x<<' ';
        fout<<krugi[s].y<<' ';
        fout<<krugi[s].radius<<endl;
    }
    
    cout<< "Выбрать круги площадь которых меньше: ";
    float s;
    cin>>s;
    float * squares = new float [count];
    for (int x=0;x<count;x++){
        squares[x]=PI*krugi[x].radius*krugi[x].radius;
    }
    for(int x=0;x<count;x++){
        if(squares[x]<s)
            cout<<"Площадь круга "<<x+1<<" меньше "<<s<<endl;
    }
 
    return 0;
}
Если нужно будет, я думаю, нюансы сами сможете доделать. Не забудьте добавить удаление динамических массивов.
lamp
0 / 0 / 0
Регистрация: 26.06.2015
Сообщений: 16
26.06.2015, 21:42  [ТС]     Объявить структуру содержащую данные для построения круга #5
Спасибо все верно работает, но хотелось бы понять в чем же ошибка в моем коде?
Даценд
Модератор
Эксперт .NET
2955 / 2870 / 1458
Регистрация: 20.04.2015
Сообщений: 5,295
26.06.2015, 23:02     Объявить структуру содержащую данные для построения круга #6
Цитата Сообщение от lamp Посмотреть сообщение
в чем же ошибка
может в том, что пишете в один файл, а читаете из другого?
Yandex
Объявления
26.06.2015, 23:02     Объявить структуру содержащую данные для построения круга
Ответ Создать тему
Опции темы

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