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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2009, 18:52   #21
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

strlen для С строк (char*), а вы используете обект класса string
Код:
x = strlen(gorod[i].city);
замени на
Код:
x = gorod[i].city.size();
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 08.05.2009, 20:18   #22
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

Код:
#include <iostream.h>
#include <string.h>
        #include <windows.h>
        char bufRus[256];
        char*Rus(const char*text)
        {
        CharToOem(text, bufRus);
        cout<<bufRus;
        return bufRus;
        }     ;

struct stoit
{
string city;
string kod;
float price;
float min;
float cost;
}   ;
        vvod( short n,stoit gorod[] );          //прототип функции ввода
        rass(short n, stoit gorod[]);           //прототип функции рассчёта
        vivod (short n, stoit gorod[]);         //прототип функции вывода
main()
{
short n;
Rus("Введите число городов, в которые вы звонили:\n");
cin>>n;
stoit * gorod=new stoit[n];
vvod(n,gorod);
rass(n,gorod);
vivod(n,gorod);
system ("pause");
} ;

        vvod( short n,stoit gorod[] )//функция ввода
{
for (short i=0; i<n;i++)
{
Rus("Введите название города, его код, стоипость одной минуты,количество проговорённых минут:\n");
cin>>gorod[i].city;
cin>>gorod[i].kod;
cin>>gorod[i].price;
cin>>gorod[i].min;
}
}
        rass(short n, stoit gorod[])//функция раасчёта
{
for(short i=0; i<n; i++)
        {
        gorod[i].cost=gorod[i].price*gorod[i].min;
        }
}
        vivod(short n, stoit gorod[])//вывод
{
short x;
const short m=9;
for (int i=0;i<n;i++) //большой цикл
{x=gorod[i].city.size();
cout<<gorod[i].city;
        for (int j=0;j<(m-x);j++)
        {
        cout<<" ";
        }
x=gorod[i].kod.size();
cout<<gorod[i].kod;
        for (int h=0;h<(m-x);h++)
        {cout<<" ";} ;
x=gorod[i].price.size();//Ошибка, так, как , вероятно,  gorod[i].price - переенная типа short. но как мне тогда посчитать количество символов???
cout<<gorod[i].price;
        for (int k=0;k<(m-x);k++)
        {cout<<" ";}
x=sgorod[i].min.size();
cout<<gorod[i].min;
        for (int l=0;l<(m-x);l++)
        {cout<<" ";}
x=gorod[i].cost.size();
cout<<gorod[i].cost;
        for (int lo=0;lo<(m-x);lo++)
        {cout<<" ";}
cout<<endl;
}
Dimarik вне форума Ответить с цитированием
Старый 08.05.2009, 20:56   #23
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Цитата:
x=gorod[i].price.size();//Ошибка, так, как , вероятно, gorod[i].price - переенная типа short. но как мне тогда посчитать количество символов???
:ROLF: я умер
У вас в коде поле price типа float(число с плавающей точкой) и откуда там символы возьмутся.

Строки у вас только city и kod.
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 08.05.2009, 21:03   #24
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

как откуда???
15,4 - число, состоящее из 4ёх символов.
мне нужно посчитать число символов при выводе на ээкран для того, чтобы сделать форматированный вывод
Dimarik вне форума Ответить с цитированием
Старый 08.05.2009, 21:08   #25
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

вы разницу между строками и числами находите?

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

int main()
{
	float f		=  2.142321298879;//число
	char  c[]	= "2.142321298879";//это масив символов

	cout<<sizeof(f)<<endl;
	cout<<sizeof(c)<<endl;
	return 0;
}
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 08.05.2009, 21:14   #26
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

нахожу.
для int можно , если я не ошиааюсь сделать так (праквда надо подключить какую-то библиотеку, не помню , правда какую)


int i = 1234567890;
int count = IntToStr(i).Length();

а вот как для float сделать и какую юиюлиотеку подключить чтоб заработало??
при подключении string и написании
x=FloatToStr(gorod[i].price).Length();
компиллятор выдаёт ошибку
Dimarik вне форума Ответить с цитированием
Старый 09.05.2009, 22:59   #27
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

так как? кто-нить в курсе как это сделать?
Dimarik вне форума Ответить с цитированием
Старый 10.05.2009, 20:22   #28
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

похожая прога. ошабка при объявлении переменных структуры (сделал до функции main для тго чтобы это были глабальные переменные)
Код:
# include <iostream.h>
#include <string>
#include <windows.h>
        char bufRus[256];
        char*Rus(const char*text)
        {
        CharToOem(text, bufRus);
        cout<<bufRus;
        return bufRus;
        }

struct city
{
string nazv;
string kod;
float price;
unsigned int k;
float h;
} ;
  city Moscow;
city Piter, Krasnodar, Rostov;
        Moscow.nazv = "Москва";
        Moscow.kod="495";
        Moscow.price=5;
        Piter.nazv="Санкт-Петербург";
        Piter.kod="862";
        Piter.price=10;
        Krasnodar.nazv="Краснодар";
        Krasnodar.kod="861";
        Krasnodar.price=2;
        Rostov.nazv="Ростов";
        Rostov.kod="555";
        Rostov.price=4;
float cost ( );//прототим функции
main()
{
unsigned short n;
Rus("Программе известны Москва, Санкт-Петербург, Краснодар, Ростов(4 города).\n\n");;


   float cost ();


}
               float cost ( )
                {
                Rus("Введите название города и количество минут:\n");
                string b;

                        if (b==Moscow.nazv)
                                {
                                cin>>Moscow.k;
                                Moscow.h=Moscow.price*Moscow.k;
                                return Moscow.h ;
                                };
                        if (b==Piter.nazv)
                                {
                                cin>>Piter.k;
                                Piter.h=Piter.price*Piter.k;
                                return Piter.h  ;
                                };
                        if (b==Krasnodar.nazv)
                                {
                                cin>>Krasnodar.k;
                                Krasnodar.h=Krasnodar.price*Krasnodar.k;
                                return Krasnodar.h;}    ;
                        if (b==Rostov.h)
                                {
                                cin>>Rostov.k;
                                Rostov.h=Rostov.price*Rostov.k;
                                return Rostov.h;};
                        }
Dimarik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структуры в C++ Wia Помощь студентам 7 18.04.2009 15:51
Структуры в СИ ManInBlack Помощь студентам 3 04.04.2009 19:08
Структуры Centyrion Общие вопросы C/C++ 4 06.05.2008 20:33
Структуры в С++ bloo[d] Помощь студентам 1 30.01.2008 22:27