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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2012, 20:16   #11
Яна696
Пользователь
 
Аватар для Яна696
 
Регистрация: 07.11.2011
Сообщений: 53
По умолчанию

ммм...спасибо...
А может я слегка обнаглела?...
Яна696 вне форума Ответить с цитированием
Старый 27.05.2012, 20:22   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

На здоровье )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.05.2012, 20:28   #13
Яна696
Пользователь
 
Аватар для Яна696
 
Регистрация: 07.11.2011
Сообщений: 53
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
На здоровье )
А можно сразу много вопросов???
Код:
// ff.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include<iostream>

using namespace std;

class c{
	int *mas,n;	
public:	c(const int xn){
	   int i,k=0;n=xn;
       mas=new int [n];
		for (i=0;i<n;i++){mas[i]=25-rand()%50;}
	}
public:~c(){delete mas;}
public:void out() {for (int i=0;i<n;i++) cout<<mas[i]<<'\t';cout<<'\n';};
public:int sum()  {int o=0; for (int i=0;i<n;i++) o-=(mas[i]<0)?i:0; return o;};
};

int _tmain(int argc, _TCHAR* argv[])
{
	c *cc=new c(5);
	cc->out();
	cout<<'\n'<<cc->sum();
	delete cc;
	getchar();

	return 0;
}
что это всё вообще такое? ну не всё,конечно,но...например,вот это:
Код:
o-=(mas[i]<0)?i:0;
я такого никогда не использовала...более менее что я проходила,я написала в своём,если так можно назвать,коде.....а тут....мне не понятно,если честно...
А может я слегка обнаглела?...
Яна696 вне форума Ответить с цитированием
Старый 27.05.2012, 20:41   #14
alezha
Форумчанин
 
Регистрация: 16.04.2011
Сообщений: 126
По умолчанию

вот что я сделал:
main.cpp
Код:
#include "class.h"
#include "class.cpp"
#include <iostream>
#include <conio.h>
using namespace std;
void main()
{
	setlocale(0,"Rus");
	int n,m,l,s= 0;
	cout<<"Enter count for x"<<endl;
	cin>>n;
	cout<<"Enter count for y"<<endl;
	cin>>m;
	cout<<"Enter count for z"<<endl;
	cin>>l;
	one <int> x(n);
	one <float> y(m);
	one <double> z(l);
	cout<<"\nEnter for x int "<<endl;
	x.add(n);
	cout<<"\nEnter for y float"<<endl;//example 132e3
	y.add(m);
	cout<<"\nEnter for z double"<<endl;//example 1.57
	z.add(l);
	cout<<"1. X"<<endl;
	x.vyvod(n);
	cout<<"2. Y"<<endl;
	y.vyvod(m);
	cout<<"3. Z"<<endl;
	z.vyvod(l);
	s=x.obr(n)+y.obr(m)+z.obr(l);
	cout<<s;
	_getch();
}
class.h
Код:
#pragma once
#include <iostream>
template<class T>
class one
{
	int n;
	T *ms;
public:
	one(int);
	void add(int n);
	void vyvod(int n);
	~one();
	int obr(int n);
};
class.cpp
Код:
#include <iostream>
#include "class.h"
using namespace std;
template<class T>
void one<T>::add(int n)
{
	int i;
	for( i=0; i<n ; i++)
	{
		cout<<"Введите ms["<<i<<"]="<<endl;
		cin>>ms[i];
	}
}
template<class T>
one<T>::one(int size)
{
	ms=new T[size];
	if (!ms)
	{
		printf("Error");
	}
}
template<class T>
one<T>::~one()
{
	delete []ms;
}
template<class T>
void one<T>::vyvod(int n)
{
	int i;
	for(i=0;i<n;i++)
		cout<<"--> "<<ms[i]<<endl;
}
template<class T>
int one<T>::obr(int n)
{
	int i,s=0;
	for(i=0;i<n;i++)
	{
		if (ms[i]>=0)
		{
			s+=i;
		}
	}
	return s;
}
alezha вне форума Ответить с цитированием
Старый 27.05.2012, 20:54   #15
Яна696
Пользователь
 
Аватар для Яна696
 
Регистрация: 07.11.2011
Сообщений: 53
По умолчанию

спасибо,попробую разобраться....
А может я слегка обнаглела?...
Яна696 вне форума Ответить с цитированием
Старый 27.05.2012, 21:24   #16
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Цитата:
Сообщение от Яна696 Посмотреть сообщение
Код:
o-=(mas[i]<0)?i:0;
я такого никогда не использовала...более менее что я проходила,я написала в своём,если так можно назвать,коде.....а тут....мне не понятно,если честно...
Вот эта строка:
Код:
o-=(mas[i]<0)?i:0;
эквивалентна следующим:
Код:
if (mas[i]<0) {
    o = o - i;
}
else {
    o = o - 0;
}
Пример можете посмотреть по шагам в отладчике:
Код:
#include <stdio.h>

int main()
{
    int mas[] = {1, 2, 3};
    int o = 2;
    int i = 1;

    o-=(mas[i]<0)?i:0;

    if (mas[i]<0) {
        o = o - i;
    }
    else {
        o = o - 0;
    }

    return 0;
}

Последний раз редактировалось 8Observer8; 27.05.2012 в 21:33.
8Observer8 вне форума Ответить с цитированием
Старый 27.05.2012, 21:34   #17
Яна696
Пользователь
 
Аватар для Яна696
 
Регистрация: 07.11.2011
Сообщений: 53
По умолчанию

как-то странно тут сумма считается..для меня немного непонятно, там о и 0 ,как я понимаю,второе -это ноль,ну да,ноль, а первое просто переменная, так какой смысл всего этого,если возвращаем 0-ноль?
А может я слегка обнаглела?...
Яна696 вне форума Ответить с цитированием
Старый 27.05.2012, 21:45   #18
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
так какой смысл всего этого,если возвращаем 0-ноль?
Не ноль
Я может быть неудачно имя выбрал, но возвращаем там именно значение переменной.
Хотя надо признать что я ошибся поставив о-=. Надо там + было поставить. Видимо машинально записал. В целом это выражение тебе уже объяснили - Си позволяет использовать условный оператор в выражениях.
Перепишу:
Код:
public:int sum()  {int s=0; for (int i=0;i<n;i++) s+=(mas[i]<0)?i:0; return s;};
Цитата:
много вопросов
Еще вопросы будут?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.05.2012, 21:49   #19
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Цитата:
Сообщение от Яна696 Посмотреть сообщение
так какой смысл всего этого,если возвращаем 0-ноль?
Я просто показал, как конструкция разворачивается. Если mas[i] будет отрицательным, то вернётся не ноль, а i.

Последний раз редактировалось 8Observer8; 27.05.2012 в 21:53.
8Observer8 вне форума Ответить с цитированием
Старый 27.05.2012, 22:01   #20
Яна696
Пользователь
 
Аватар для Яна696
 
Регистрация: 07.11.2011
Сообщений: 53
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Не ноль
Я может быть неудачно имя выбрал, но возвращаем там именно значение переменной.
Хотя надо признать что я ошибся поставив о-=. Надо там + было поставить. Видимо машинально записал. В целом это выражение тебе уже объяснили - Си позволяет использовать условный оператор в выражениях.
Перепишу:
Код:
public:int sum()  {int s=0; for (int i=0;i<n;i++) s+=(mas[i]<0)?i:0; return s;};
Еще вопросы будут?
Вооот..теперь понимаю...теперь у Вас return S стоит, а там был ноль! Сейчас еще подумаю над вопросами..
А может я слегка обнаглела?...
Яна696 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему утечка памяти, если указатель на обьект сохраняется? Человек_Борща Общие вопросы Delphi 4 24.11.2011 13:24
Классы памяти romario1091 Общие вопросы C/C++ 1 29.04.2010 16:00
Классы и массивы Элодар Общие вопросы C/C++ 8 31.01.2009 16:22