Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> массив структур 
V
    Опции темы
PascalC
Дата 2.12.2008, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 19.10.2008

Репутация: нет
Всего: нет



Подскажите пожалуйста, как создать массив структур? 
Простейший пример записать/считать значения, пытался делать так:
Код

#include <iostream>
#include <time.h>
using namespace std;
struct pixel
{
double x,y;
}
void main()
{
pixel *t;
int n,i;
  cout<<"Vvedite kol-vo to4ek";
  cin>>n;
  t=new pixel[n];
  srand(time(0));
  
  for (i=0;i<n;i++)
    {
    t[i].x=rand()%100;
    t[i].y=rand()%100;
    }

  for (i=0;i<n;i++)
    {
    cout<<"x="<<t[i].x<<" y="t[i].y<<"/n";
    }

delete []t;
}

пишет куча ошибок, начиная с 8-ой строки
(8) : error C2628: 'pixel' followed by 'void' is illegal (did you forget a ';'?)
(9) : error C3874: return type of 'main' should be 'int' instead of 'pixel'
(15) : warning C4244: 'argument' : conversion from 'time_t' to 'unsigned int', possible loss of data
(24) : error C2146: syntax error : missing ';' before identifier 't'
(24) : error C2296: '<<' : illegal, left operand has type 'double'
(24) : error C2297: '<<' : illegal, right operand has type 'const char [3]'

PM MAIL   Вверх
Dmi3ev
Дата 3.12.2008, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



вот так хотя бы:
Код

#include <iostream>
#include <time.h>
using namespace std;
struct pixel
{
double x,y;
};
void main()
{
pixel *t;
int n,i;
  cout<<"Vvedite kol-vo to4ek";
  cin>>n;
  t=new pixel[n];
  srand(time(0));

  for (i=0;i<n;i++)
    {
    t[i].x=rand()%100;
    t[i].y=rand()%100;
    }
  for (i=0;i<n;i++)
    {
    cout<<"x="<<t[i].x<<" y="<<t[i].y<<endl;
    }

delete []t;
}



--------------------

PM MAIL   Вверх
PascalC
Дата 3.12.2008, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 19.10.2008

Репутация: нет
Всего: нет



все работает! спасибо большое, осталось найти где была ошибка

да, глупо, точку с запятой не поставил и << 
еще раз спасибо smile

Это сообщение отредактировал(а) PascalC - 3.12.2008, 00:20
PM MAIL   Вверх
Dmi3ev
Дата 3.12.2008, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Цитата

да, глупо, точку с запятой не поставил и << 

еще /n )))


--------------------

PM MAIL   Вверх
PascalC
Дата 3.12.2008, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 19.10.2008

Репутация: нет
Всего: нет



ну да, палку в другую сторону smile
PM MAIL   Вверх
yurk84
Дата 27.4.2009, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 13.2.2009
Где: Москва

Репутация: нет
Всего: нет



Здравствуйте, уважаемые форумчане!!!

Хочу написать программу иммитирующую проведение ЧР по футболу. Задачу для начала хочу выполнить с помощью массива структур, в которых содержаться поля: названия команды, победы, ничьи, проигрыши, разница мячей и очки.
Как объявить такой массив в BC++ v3.1?

Заранее благодарю!!!

PM MAIL Skype   Вверх
Dov
Дата 27.4.2009, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(yurk84 @  27.4.2009,  19:55 Найти цитируемый пост)
Задачу для начала хочу выполнить с помощью...


yurk84, для начала почитай правила форума..   smile 


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Dmi3ev
Дата 28.4.2009, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



вот структура:
Код

struct myteam
{
    char name[50];//название
    int victory;//побед
    int lose;//поражений
    int nobody;//ничьих
    int balls_diff;//разница мячей
    int points;//очки
};

вот так можно объявить массив твоих структур
Код

    vector<myteam> v;

а вот так юзать (для примера):
Код

#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;

struct myteam
{
    char name[50];
    int victory;
    int lose;
    int nobody;
    int balls_diff;
    int points;
};

int main()
{
    vector<myteam> v;
    
    myteam t1;
    strcpy(t1.name, "CSKA");
    t1.victory=100;
    t1.lose=0;
    t1.nobody=0;
    t1.balls_diff=1000;
    t1.points=t1.victory*3+t1.nobody;

    v.push_back(t1);

    for (int i=0; i<v.size(); i++)
        cout<<v[i].name<<" "<<v[i].points<<endl;
    system("PAUSE");
    return 0;
}

ЗЫ только так у тебя 
Цитата

BC++ v3.1
 хидеры придется подправить немного...


--------------------

PM MAIL   Вверх
math64
Дата 28.4.2009, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 12
Всего: 72



Цитата(Dmi3ev @  28.4.2009,  15:36 Найти цитируемый пост)
хидеры придется подправить немного...

Нет там stl, не только хидеры
PM   Вверх
Dmi3ev
Дата 28.4.2009, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Цитата

Нет там stl, не только хидеры 

точняк, тогда либо указатель использовать:
Код

myteam *mt1=new myteam[20];

либо массив:
Код

myteam  mt1[20];



--------------------

PM MAIL   Вверх
yurk84
Дата 28.4.2009, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 13.2.2009
Где: Москва

Репутация: нет
Всего: нет



Всем большое спасибо за ответы, особенно Dmi3ev !!!

У меня к тебе только один ещё вопрос: как твоему массиву структур задать начальные значения? Я хочу на старте сезона всем участвующим командам прописать нули, а в поле имени задать имя каждой команде. Как это сделать в Borland C++ 3.1?

Заранее благодарю!!!!


PM MAIL Skype   Вверх
Dmi3ev
Дата 29.4.2009, 02:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Код

    int n;
    cout<<"How many teams?"<<endl;
    cin>>n;

    myteam *mt=new myteam[n];
    for (int i=0; i<n; i++)
    {
        cout<<"Enter name"<<endl;
        cin>>mt[i].name;
        mt[i].lose=mt[i].balls_diff=mt[i].nobody=mt[i].points=mt[i].victory=0;
    }
    for (int i=0; i<n; i++)
        cout<<mt[i].name<<" "<<mt[i].lose<<" "<<mt[i].nobody<<endl;

а можно задуматься и над созданием класса с конструктором и методами...


--------------------

PM MAIL   Вверх
math64
Дата 29.4.2009, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 12
Всего: 72



Если ты заранее знаешь количество команд и их названия, можно инициализировать так:
Код

struct myteam
{
    char name[50];//название
    int victory;//побед
    int lose;//поражений
    int nobody;//ничьих
    int balls_diff;//разница мячей
    int points;//очки
};
struct myteam myteams[] = {
  {"Спартак", 0, 0, 0, 0, 0 },
  {"ЦСКА", 0, 0, 0, 0, 0 }
};

Если не знаешь, удобнее читать из файла.
Код

ifstream is("teams.txt");
is>>n;
myteam *mt=new myteam[n];
    for (int i=0; i<n; i++)
    {
    is>>mt[i].name;
    is>>mt[i].lose>>mt[i].balls_diff>>mt[i].nobody>>mt[i].points>>mt[i].victory;
    }
...
ofstream os("teams.txt");
os<<n<<endl;
    for (int i=0; i<n; i++)
    {
    os<<mt[i].name<<' ';
    os<<mt[i].lose<<' '<<mt[i].balls_diff<<' '<<mt[i].nobody<<' '<<mt[i].points<<' '<<mt[i].victory<<endl;
    }
delete mt;
}


Это сообщение отредактировал(а) math64 - 29.4.2009, 09:09
PM   Вверх
yurk84
Дата 29.4.2009, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 13.2.2009
Где: Москва

Репутация: нет
Всего: нет



Цитата(math64 @ 29.4.2009,  08:59)
Если ты заранее знаешь количество команд и их названия, можно инициализировать так:
Код

struct myteam
{
    char name[50];//название
    int victory;//побед
    int lose;//поражений
    int nobody;//ничьих
    int balls_diff;//разница мячей
    int points;//очки
};
struct myteam myteams[] = {
  {"Спартак", 0, 0, 0, 0, 0 },
  {"ЦСКА", 0, 0, 0, 0, 0 }
};

Если не знаешь, удобнее читать из файла.
Код

ifstream is("teams.txt");
is>>n;
myteam *mt=new myteam[n];
    for (int i=0; i<n; i++)
    {
    is>>mt[i].name;
    is>>mt[i].lose>>mt[i].balls_diff>>mt[i].nobody>>mt[i].points>>mt[i].victory;
    }
...
ofstream os("teams.txt");
os<<n<<endl;
    for (int i=0; i<n; i++)
    {
    os<<mt[i].name<<' ';
    os<<mt[i].lose<<' '<<mt[i].balls_diff<<' '<<mt[i].nobody<<' '<<mt[i].points<<' '<<mt[i].victory<<endl;
    }
delete mt;
}

Спасибо math64!!! Ты написал мне именно то, что я хотел. Благодарю ещё раз!!!

PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0966 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.