• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Вопрос: синтаксис структур, объединений, перечисл. тип

  • Автор темы kaffein
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

kaffein

друзья, помогите пожалуста.
пишу лабу, практически её написал, но нужно оформить ето в виде функцый.
ну и канечно исправить ошибки если есть! B)
C++:
#include "stdafx.h"
#include "stdio.h"
#include <time.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
enum colors {red=65, green=3,yellow=2};
colors v1=green;
if(v1==3)
printf("zelenuu");
else(v1!=3);
printf("error");




union aaa
{
char a;
int b;
short c;
float d;
long s;
char v[23];
}aaa;
aaa de[50];
int i,j,k,st,st1,st2;
double sum1,sum2,sum3;
srand(time(NULL));
for(i=0;i<43;i+=3)
{
de[i].c= rand()%200;
for(st=0;st<i;st++)
sum1+=st;
}
for(j=1;j<43;j+=3)
{
de[j].b= rand()%200;
for(st1=0;st1<j;st1++)
sum2+=st1;
}
for(k=2;k<43;k+=3)
{
de[k].d=rand()%200;
for(st2=0;st2<k;st2++)
sum3+=st2;
}



struct student
{
char surname [15]; //фамилия
int year; //год рождения
char faculty [4]; //факультет
int gr; //группа
};



typedef struct data
{
int day;
int month;
int year;
}data;
data buf[100];
buf[23].day=30;
buf[12].month=12;
typedef struct {
int day;
int month;
int year;
} data;
data	buf[100];		// масив структур
data *	p = &buf[0];// покажчик на масив структур
srand(time(NULL));
for ( int i = 0; i < 100; i++ ) 
{
p->day = rand() % 31;
p->month = rand() % 12;
p->year = rand() % 11+2000;
printf( "%2d: day = %2d, month = %2d, year = %2d\n", i, p->day, p->month, p->year );
p++;
}

getch();


return 0;
} 





return 0;
}
помогите ато уже третий день сижу но ничего не получается
зарание спасибо
 
K

kaffein

задание то скажи какое.
1. Створити проект, який містить консольну програму Win32.
2. Створити перераховує мий тип та декілька змінних даного типу, виконати декілька
довільних операцій над змінними (арифметичні операції та операції порівняння).
3. Створити об’єднання що містить елементи типів вказаних у варіантах до роботи
(char, int, short, flout,long,string). Створити масив елементів типу об’єднання, заповнити елементи даного
масиву випадковими значеннями з правилом: елементи масиву 0, 3, 6, 9 і т.д. містять
значення першого типу, елементи масиву 1, 4, 7, 10 і т.д. містять значення другого
типу, елементи масиву 2, 5, 8, 11 і т.д. містять значення третього типу. Обчислити суму
елементів кожного типу.
4. Створити структуру яка буде містити персональну інформацію про студента,
наприклад: ПІБ, рік та дату народження, факультет, інформація про групу, номер
залікової книжки, стать, громадянство, адреса тощо. Поля потрібно обирати на
власний розсуд, їх кількість має бути однак не менше 3-х.
5. Створити масив структур з використанням значень ініціалізаторів. Використовуючи
звичайну адресацію до елементів масиву змінити значення довільного поля структури
для всіх елементів масиву.
6. Об’явити покажчик на структур, та використовуючи даний покажчик вивести вміст всіх
елементів масиву на екран.
7. Записати у файл значення елементів масиву структур та зчитати їх з файлу у інший
масив.
тока на украинском, если совсем плохо то я переведу :(
 
H

hosm

kaffein лучше переведи, сишники все из России, форум белорусский, правила четко говорят о тех языках, которые допустимы на форуме...
 
K

kaffein

kaffein лучше переведи, сишники все из России, форум белорусский, правила четко говорят о тех языках, которые допустимы на форуме...
1.создать перечисляемый мой тип и несколько переменных, сделать несколько операций над ними
2. создать объединение что содержит элементы типов (char, int, short, flout,long,string).
создать массив элементов типа объединения,заполнить элементы данного массива случайными значениями за правилом
0, 3, 6, 9 содержат один тип
1, 4, 7, 10 какой-то другой
2, 5, 8, 11 третий
вычислить суму каждого типа
3.создать структуру которая будет содержать личную информацию о студенте.
4.создать массив структур с использованием значений инициализаторов. используя обычную адресацию к элементам массива заменить значение любого поля структуры для всех элементов массива.
объявить указатель на структуру и используя данный указатель вывести содержание всех элементов массива на экран.
5. записать значение элементов массива структур в файл. считать их из файла и записать в другой массив.
 
D

DarkKnight

Да что вы так на парня то ??? ;-))) Я правда плохо понял сам что он в первом сообщении написал, но что ж тут поделаешь ;-) языковой барьер ;-)))

2kaffein: У вас дубли прослеживаются в коде.... Описание структур в функции.... Дублирование структур... typedef - Не нужен... В объединение указана переменная типа одноименная самому типу... И еще много чего...
Я вчера пытался откорректировать, честно сказать было поздно и когда уже до 3его дубля дошел, то психанул и вырубил комп...

З.Ы. Щас ребенко покупаю.... Подкорректирую...
 
D

DarkKnight

C++:
//#include "stdafx.h" //Не оставляй такой мусор не понадобился
//#include "stdio.h" //Тут <> - такие свобки мы будем искать в глобальных каталогах инклуда stdio.h
#include <stdio.h>
#include <time.h>
#include <stdlib.h>


enum colors {red=65, green=3,yellow=2}; //Венесим перечисляемый тип за гл. функцию
//С объединением та же история
union aaa
{
char a;
int b;
short c;
float d;
long s;
char v[23];
}//aaa1; - Вот тут или сразу свою de[50] определяй или ничего вообще
;

//Структура... вот с ней я полностью согласен
struct student
{
char surname [15]; //фамилия
int year; //год рождения
char faculty [4]; //факультет
int gr; //группа
};

typedef struct data
{
int day;
int month;
int year;
}data;

//Вот этим фрагментом ты что хотел показать???
/*typedef struct {
int day;
int month;
int year;
} data;
*/

//Главная функция
int main(int argc, char* argv[])
{
colors v1=green;
if(v1==3)
printf("zelenuu");
//else(v1!=3) //; //Точка с запятой тут совсем не нужна тебе же нужно вывести error на экран + else - Не поддерживаем условие поэтому
//(v1!=3) - не нужно оно и так идет по умолчанию... а хочешь условие используй else if ()
else
printf("error");

aaa de[50];
int i,j,k,st,st1,st2;
srand(time(NULL));

double sum1 = 0.0 ,sum2 = 0.0 ,sum3 = 0.0; //(!!!)
for(i=0;i<43;i+=3)
{
de[i].c= rand()%200;
for(st=0;st<i;st++)
sum1+=st; //Не видел я что бы ты sum1, sum2 и sum3 - инициализировал... Так к чему ты st прибавлешь??? Им нужно сначало нуль присвоить выше(!!!)
}
for(j=1;j<43;j+=3)
{
de[j].b= rand()%200;
for(st1=0;st1<j;st1++)
sum2+=st1;//см. выше
}
for(k=2;k<43;k+=3)
{
//de[k].d=rand()%200; //Тут преобразование в float нужно... Желательно такие моменты явно прописывать
de[k].d=float (rand()%200);
for(st2=0;st2<k;st2++)
sum3+=st2; //см. выше
}

//едем дальше
//Тут у тебя было куда одинаковых (дублируемых структур определено
//Вырезал и прилепил на верх... там и прокомментирую
//data buf[100]; //Ты ее ниже определяешь
//buf[23].day=30; //А вот эти 2 строки нужно сместить после определения
//buf[12].month=12;

data	buf[100];		// масив структур
buf[23].day=30; 
buf[12].month=12;
data *	p = &buf[0];// покажчик на масив структур
srand(time(NULL));
for ( int i = 0; i < 100; i++ ) 
{
p->day = rand() % 31;
p->month = rand() % 12;
p->year = rand() % 11+2000;
printf( "%2d: day = %2d, month = %2d, year = %2d\n", i, p->day, p->month, p->year );
p++;
}

getchar();

return 0;
}
Сам код я не смотрел и на работоспособность не проверял...
 
K

kaffein

:not acorn это уже не смешно, я з України ти розумієш мене? интересно сколько ты сделал бы ошибок если бы писал украинский текст :what?:
 
L

lazybiz

kaffein
да забей ты)) тебе Кнайт много чего полезного написал, что скажешь по этому поводу?
 
K

kaffein

:what?:
kaffein
да забей ты)) тебе Кнайт много чего полезного написал, что скажешь по этому поводу?
"вау! дружище, ты меня спас! огромное спасибо" вот это и сказал. Он меня реально выручил, ведь мне завтра уже нужно лабу сдать. спасибо всем, кто помогал решать мою проблему :lovecodeby:
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!