Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2015, 12:19   #1
Ka2R
Пользователь
 
Регистрация: 19.10.2010
Сообщений: 49
По умолчанию Структура на Си

Начинаю изучать язык на простых примерах. Дали задание написать простую программу выводящую все типы данных в Си с модификаторами типа и некоторые их характеристики.

Код:
#include <stdio.h>

#pragma pack(1)

	char 				ch=(char)0xFF;
	unsigned char 		uch=0xFF;
	signed char 		sch=(char)0xFF;
	short int 			shi=(short int)0xFFFF;
	short unsigned int 	usi=0xFFFF;
	int 				i=0xFFFFFFFF;
	unsigned int 		ui=0xFFFFFFFF;
	long int 			li=0xFFFFFFFF;
	long unsigned int 	uli=0xFFFFFFFF;
	float 				fl=0xFFFFFFFF;
	int 				n=10;
		/*double d=0xFFFFFFFFFFFFFFFF;*/


#pragma pack()

int perem()
{
	
 
	printf("\t %-11s %-19s %-15s %-23s %-15s %-15s %-15s\n", "Tip", "Vivod v 10-noi", "Vivod v HEX", "Razmer peremennoi", "Razmer tipa", "Adres peremennoi", "Smeschenie");
	n=(unsigned int)&uch-(unsigned int)&ch;
	printf("%-20s %-15i\t %#-10hx\t %-15i\t %-15i %-20p %i\n", "Char", ch, ch,  sizeof (ch), sizeof(char), &ch, n);


	n=(unsigned int)&sch-(unsigned int)&uch;
	printf("%-20s %-15i\t %#-10x\t %-15i\t %-15i %-20p %i\n", "Unsigned char", uch, uch, sizeof (uch), sizeof(unsigned char), &uch, n);
	
	n=(unsigned int)&shi-(unsigned int)&sch;
	printf("%-20s %-15i\t %#-10x\t %-15i\t %-15i %-20p %i\n", "Signed char", sch, sch, sizeof (sch), sizeof(signed char), &sch, n);

	n=(unsigned int)&usi-(unsigned int)&shi;
	printf("%-20s %-15hd\t %#-10hx\t %-15i\t %-15i %-20p %i\n", "Short int", shi, shi, sizeof (shi), sizeof(short int), (void *)&shi, n);

	n=(unsigned int)&i-(unsigned int)&usi;
	printf("%-20s %-15hu\t %#-10x\t %-15i\t %-15i %-20p %i\n", "Short unsigned int", usi, usi, sizeof (usi), sizeof(unsigned short int), (void *)&usi, n);
	
	n=(unsigned int)&ui-(unsigned int)&i;
	printf("%-20s %-15d\t %#-10x\t %-15i\t %-15d %-20p %i\n", "Int", i, i, sizeof (i), sizeof(int), (void *)&i, n);

	
	n=(unsigned int)&li-(unsigned int)&ui;
	printf("%-20s %-15u\t %#-10x\t %-15i\t %-15d %-20p %i\n", "Unsigned int",ui, ui, sizeof (ui), sizeof(unsigned int), (void *)&ui, n);
	
	n=(unsigned int)&uli-(unsigned int)&li;
	printf("%-20s %-15ld\t %#-10x\t %-15i\t %-15i %-20p %i\n", "Long int", li, (unsigned int)li, sizeof (li), sizeof(long int), (void *)&li, n);
	

	n=(unsigned int)&fl-(unsigned int)&uli;
	printf("%-20s %-15lu\t %#-10x\t %-15i\t %-15i %-20p %i\n", "Long unsigned int", uli, (unsigned int)uli, sizeof (uli), sizeof(unsigned long int), (void *)&uli, n);
	
	n=(unsigned int)&n-(unsigned int)&fl;
	printf("%-20s %-15.2f\t %#-10x\t %-15d\t %-15i %-20p %i\n", "Float", fl, (int)fl, sizeof (fl), sizeof(float), (void *)&fl, n);
	/*printf("Double = %.2f %x Razmer peremennoi = %e Razmer tipa = %i\n", d, d, sizeof d, sizeof(double));*/

	
	return 0;
}
Следующая задача сделать все тоже самое, но с использованием структуры. Теорию прочитал в Кернигане и Ритчи, но четкое осознание пока не пришло. Судя по теории и примерам на форуме, структура моя должна описывать поля таблицы, а типы данных будут задаваться как переменные структуры?
Ka2R вне форума Ответить с цитированием
Старый 10.03.2015, 13:08   #2
Ka2R
Пользователь
 
Регистрация: 19.10.2010
Сообщений: 49
По умолчанию

Код:
struct tipy {
	int des;
	int hex;
	int razmer_tipa;
	int razmer_per;
	void * adres;
	int smeschenie;
} ch,uch,sch,shi,usi,i,ui,li,uli,fl,n;
Правильный ход мыслей или нет?
Ka2R вне форума Ответить с цитированием
Старый 10.03.2015, 13:48   #3
Jurijus123
Заблокирован
 
Регистрация: 12.11.2014
Сообщений: 120
По умолчанию

Цитата:
Сообщение от Ka2R Посмотреть сообщение
Код:
struct tipy {
	int des;
	int hex;
	int razmer_tipa;
	int razmer_per;
	void * adres;
	int smeschenie;
} ch,uch,sch,shi,usi,i,ui,li,uli,fl,n;
Правильный ход мыслей или нет?
Да хорошо начили, вот вам пример:

Код:
#include <string>
#include <iostream>
#include <sstream>
using namespace std;

struct document
   {
string ages.
string example; //some includes
char buffer[91];
string b2,gin;
    };egs[3],age//missives or includes

string ch(string gi)//example if dived by two clean string
     {
stringstream ssi;
string gin;
int i=0,a,b;
char mask2;
ssi;ssi.str(gi);
while (!ssi.eof()){
ssi>>mask2;
if(ssi.eof()){}else{if(ssi.eof()){}//for test is finish or not, for work perfectly
else{i++;}}}
a=i/2;
b=a*2;
if(i==b){gin="";}
if (i!=b) 
{gin=gi;}
cout<<endl;return gin;}
string example(float eg)
{
  document a; 
  //operation which a.
  a.example=”Hello world”;  
  cout<< a.example<<endl;

  return a.example  
}


int main(){document a; float eg;
cout<<"Please, type a text";
cin>>a.buffer;
a.b2=ch(a.buffer);
cout<<a.b2;
system("pause");
a.example=example(eg);
cout<<a.example<<endl; 
system("pause");
for(int i=0; i<3; i++)//here must get three lines always started from zero
{ 
  eg[i].example=”Hello world”;
  cout<<eg[i].example<<endl; 
}
system("pause");
age.ages=24;
cout<<age.ages<<endl;
system("pause");
return 0;
}

Последний раз редактировалось Jurijus123; 10.03.2015 в 13:55.
Jurijus123 вне форума Ответить с цитированием
Старый 10.03.2015, 14:16   #4
Ka2R
Пользователь
 
Регистрация: 19.10.2010
Сообщений: 49
По умолчанию

Спасибо за пример, но их я уже пересмотрел кучу и многие понятны. В моей же ситуации я не пойму какого типа мне нужна задать переменную znach в структуре, ведь у меня изначально были типы разные - и инт, и чар, и флоат. И как в дальнейшем мне искать и отображать, например, размер каждого типа, если razmer_tip у меня int?

Код:
struct tip{
int znach;
int razmer_tip;
int razmer_per;
void * adres;
int smeschenie;
} ch,uch,sch,shi,usi,i,ui,li,uli,fl,n;
Ka2R вне форума Ответить с цитированием
Старый 10.03.2015, 16:06   #5
Ka2R
Пользователь
 
Регистрация: 19.10.2010
Сообщений: 49
По умолчанию

Вот к чему пришел в конце. верно?

Код:
struct 	tip {
char 				ch;
unsigned char 		uch;
signed char 		sch;
short int 			shi;
short unsigned int 	usi;
int 				i;
unsigned int 		ui;
long int 			li;
long unsigned int 	uli;
float 				fl;
} 		a;
Ka2R вне форума Ответить с цитированием
Старый 11.03.2015, 18:38   #6
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

Код:
int main()
{
  struct type_info
  {
    char          type_name[51];
    unsigned long type_size;
    unsigned long max_value;
  } types[] =
  { {"char",  sizeof(char),  ((unsigned char)-1)/2},
    {"short", sizeof(short), ((unsigned short)-1)/2},
    {"int",   sizeof(int),   ((unsigned int)-1)/2},
  };
  for(int i = 0; i < sizeof(types)/sizeof(type_info); i++)
      printf("name : %10s size : %4d max_val : %15d\n", types[i].type_name, types[i].type_size, types[i].max_value);
  return 0;
}
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структура С++ hokkaido88 Помощь студентам 0 12.03.2013 20:38
Структура С++ Infini Помощь студентам 1 03.03.2013 01:32
Структура Lifehouse Общие вопросы C/C++ 5 08.06.2012 22:36
Структура БД rozetka777 Microsoft Office Access 1 20.03.2012 14:50
структура tatianlv Visual C++ 0 09.03.2012 15:08