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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2012, 22:42   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
потому что Cи
Цитата:
#include <fstream>
#include <iostream>
Это Классический Си?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.02.2012, 22:44   #12
crymchanin
Пользователь
 
Аватар для crymchanin
 
Регистрация: 01.02.2012
Сообщений: 84
По умолчанию

будет проще использовать std::string и кстати для мощности CPU используй переменную хранящую число с плавающей запятой - float, double

Код:
#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;

struct StrSoft
{
	string OS;
	int Bits;
	string Ver;
};

struct StrConfig
{
	float CPU;
	int RAM;
	int HDD;
	StrSoft *System;
};


int main(int argc, char* argv[])
{

	StrConfig* s = new StrConfig[sizeof(StrConfig)];
	s->System = new StrSoft[sizeof(StrSoft)];
	s->CPU = 2.1;
	s->HDD = 4000;
	s->RAM = 1000;
	s->System->OS = "Windows 7";
	s->System->Bits = 64;
	s->System->Ver = "Professional";

	cout<<s->CPU<<endl;
	cout<<s->HDD<<endl;
	cout<<s->RAM<<endl;
	cout<<s->System->OS<<endl;
	cout<<s->System->Bits<<endl;
	cout<<s->System->Ver<<endl;

        delete[] s;
	delete[] s->System;

	getchar();
	return 0;
}

Последний раз редактировалось crymchanin; 17.02.2012 в 23:07.
crymchanin вне форума Ответить с цитированием
Старый 17.02.2012, 22:52   #13
harimambura
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 45
По умолчанию

Цитата:
Это Классический Си?
господи, вот уже ненадо придираться. инклюды просто копирую из проекта в проект, не заморачиваюсь на выборе, ибо не важно, что из подключенного нужно, а что нет.

Цитата:
...кстати для мощности CPU используй переменную хранящую число с плавающей запятой - float, double
так мощность в герцах тип=)
при наличии претензий перейдите сюда
harimambura вне форума Ответить с цитированием
Старый 17.02.2012, 22:54   #14
harimambura
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 45
По умолчанию

crymchanin, спасибо)
при наличии претензий перейдите сюда
harimambura вне форума Ответить с цитированием
Старый 17.02.2012, 22:59   #15
crymchanin
Пользователь
 
Аватар для crymchanin
 
Регистрация: 01.02.2012
Сообщений: 84
По умолчанию

Цитата:
так мощность в герцах тип=)
не заметил)

Цитата:
crymchanin, спасибо)
незачто
crymchanin вне форума Ответить с цитированием
Старый 18.02.2012, 10:21   #16
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Я так понимаю, общение шло на уровни абстракции проблемы. Поэтому ушли от Си.

harimambura, в вашем первоначальном коде были ошибки:
Вместо:
Код:
    scanf("%d", Base->System->Bits);
    scanf("%d", Base->CPU);
    scanf("%d", Base->RAM);
    scanf("%d", Base->HDD);
Нужно:
Код:
    scanf("%d", &Base->System->Bits);
    scanf("%d", &Base->CPU);
    scanf("%d", &Base->RAM);
    scanf("%d", &Base->HDD);
Ещё необходимо "поймать Enter" перед gets (иначе gets "поймает Enter"). Поймать можно функцией getchar().
Код:
#include <stdio.h>
#include <stdlib.h>

struct StrSoft
{
    char OS[50];
    int Bits;
    char Ver[50];
};

struct StrConfig
{
    int CPU;
    int RAM;
    int HDD;
    struct  StrSoft *System;
};

int main()
{
    struct  StrConfig *Base;

    Base =  (struct  StrConfig*) malloc (sizeof(struct  StrConfig));
    if (Base == NULL) {
        exit (1);
    }

    Base->System = (struct StrSoft*) malloc (sizeof(struct  StrSoft));
    if (Base->System == NULL) {
        exit (1);
    }

    printf("Please write your OS:\n");
    gets(Base->System->OS);
    printf("\nPlease write your system bits (64 or 32):\n");
    scanf("%d",&Base->System->Bits);
    getchar();
    printf("\nPlease write version of your OS:\n");
    gets(Base->System->Ver);
    printf("\nPlease write your CPU (Hz):\n");
    scanf("%d",&Base->CPU);
    printf("\nPlease write your RAM (Mb):\n");
    scanf("%d",&Base->RAM);
    printf("\nPlease write your HDD (Gb):\n");
    scanf("%d",&Base->HDD);

    free(Base);
    free(Base->System);
    return 0;
}
P.S. malloc --> http://www.cplusplus.com/reference/c...stdlib/malloc/

Последний раз редактировалось 8Observer8; 18.02.2012 в 10:38.
8Observer8 вне форума Ответить с цитированием
Старый 18.02.2012, 21:27   #17
rmv240899
Форумчанин
 
Регистрация: 18.02.2012
Сообщений: 155
Восклицание

Цитата:
Сообщение от harimambura Посмотреть сообщение
Код:
struct  StrSoft *System;

--------
struct  StrConfig *Base;

--------
Base =  (struct  StrConfig*) malloc (sizeof(struct  StrConfig));
Зачем struct, разве он сдесь нужен???
Народ, если не права, объясните плиз???
rmv240899 вне форума Ответить с цитированием
Старый 18.02.2012, 21:44   #18
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от rmv240899 Посмотреть сообщение
Зачем struct, разве он сдесь нужен???
Народ, если не права, объясните плиз???
на чистом си нужно указывать перед именем структуры struct
на с++ не обязательно (но тоже можно)
_Bers вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со структурами _Колибри_ Помощь студентам 2 28.11.2011 02:09
c++, работа со структурами f1xmAn Помощь студентам 1 28.05.2011 20:29
[C++] Работа со структурами... max382 Помощь студентам 30 05.05.2011 15:56
в Си работа со структурами akakii Помощь студентам 3 04.03.2011 05:25
Программа с структурами Olya90 Помощь студентам 10 25.04.2009 17:18