Форум   Статьи   Новости   Файлы   Bugtraq   Сниффер   Друзья   О Клубе
Вернуться   HPC / Кодинг / C/C++
 
  Страница 2
  , 11:22   #16
Продвинутый
 
Аватар для BlackH
 
Локация: underworld
Регистрация: 05.12.2011
Сообщений: 1,606

Репутация: 167 / 3
По умолчанию

Ну так есть раздел -Assembler,туда и выкладывай.
__________________
Вангую..
Пользователь вне форума    
Наши Спонсоры
  , 08:26   #17
Banned
 
Регистрация: 04.09.2011
Сообщений: 392

Репутация: 3 / 0
По умолчанию

code:
#include <cstdlib>
#include <iostream>



using namespace std;


class ToList {

	

	struct list {
	
	public:
		list * next,* pred;
		int data;

		
	};

list * one;
list * lost;
unsigned int count;
	public:
ToList(){one=0; lost=0; count=0; }
~ToList() { delete one; delete lost ;}

int functolist(int p);
void OutList();
void deletItem(int);
};

int ToList::functolist(int p) {
	
		list * listp= new list;
	
	if(count<=0) {


		one=listp;
		lost=listp;
		count++;
		listp->data=p;
		listp->pred=0;
		listp->next=0;
	
	}

	else {


        lost->next=listp;
		listp->pred=lost;
		lost=listp;
		count++;
		listp->data=p;		

	}

	return 0;

}


void ToList::deletItem(int s) {
	
	list*  sv= one;
	
	for(int i=0;i<s;i++) {

		
		sv=sv->next;

	}

	sv->next->pred=sv->pred;
	sv->pred->next=sv->next;

	count--;
	delete sv;


}





void ToList:: OutList() {

	list*  sv= one;

	for(int i=0;i<count; i++) {

		cout << sv->data << endl;
		sv=sv->next;

	}

}

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


	ToList p;
	
	p.functolist(5);
	p.functolist(8);
	p.functolist(82);
	p.OutList();
	p.deletItem(1);
	p.OutList();
	p.~ToList();
	
	system("pause");
	return 0;
}
связанный список.
 

Последний раз редактировалось SSBug; 26.10.2012 в 17:12.
Пользователь вне форума    
  , 21:21   #18
Jedi Knight
 
Аватар для vladyxa13
 
Локация: Планета Земля
Регистрация: 03.04.2013
Сообщений: 1,120

Репутация: 227 / 4
Cool

Конвертер гигабайтов в мегабайтов и так далее
Недавно начал С++ изучать
Здесь используется объекты ввода(cin>>) и вывода (cout<<)информации
Ну вот и сам код
C++ highlight
// (c) vladyxa13
#include<conio.h>
#include<iostream>
	using namespace std;
	int main(){ 
	setlocale(LC_ALL, "rus");//Переводим консольку на русский
	const int Size = 1024;//неизменная константа
		int Gigabytes,Megabytes,Kbytes;
		 
	unsigned long long bytes;
	cout <<"введите ко-ол Gb: ";
	cin >> Gigabytes;//ввод гигабайт \значения
			Megabytes = Gigabytes * Size;
			Kbytes = Megabytes * Size;
			bytes = Kbytes * Size;
	cout << "Мб : " << Megabytes << endl;
	cout << "Кб : " << Kbytes << endl;
	cout << "Байтов :" <<  bytes<< endl;
		_getch();//включает задержку консоли
	return 0;//успешное завершение программы
}
__________________

Профессия тыже программист очень популярная!
Почини колонку, тыже программист. Достань кота с дерева тыже программист! ...

Никогда ее не забуду http://www.youtube.com/watch?v=OH15GOMvYUs [►], на ней вырос...

Последний раз редактировалось vladyxa13; 20.09.2013 в 08:31. Причина: Добавились новые знания, код был не оч. чесно говоря
Пользователь вне форума    
  , 13:03   #19
НЕ ПРОВЕРЕН
 
Регистрация: 16.07.2012
Сообщений: 6

Репутация: 0 / 0
Smile

code:
  ///////////////
 /// BY M1X0 ///
///////////////
#include <cstdlib>
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
	int  mix;
	srand( time( 0 ) );
	mix = 99 + rand() % 827;
	cout<<"MAGIC CUB"<<endl;
	cout<<"\n"<<endl;
	cout<<"\n"<<endl;
	cout<<"1. Задумайте любое двухзначное число."<<endl;
	cout<<"\n"<<endl;
	cout<<"2. Вычтите из него составляющие его цифры (например, из числа 46 надо вычесть 4 и 6, получится 36). "<<endl;
	cout<<"\n"<<endl;
	cout<<"3. Найдите это число в таблице и число, которому оно соответствует. "<<endl;
	cout<<"\n"<<endl;
	cout<<"98=>"<< 99 + rand() % 888 <<" 96=>"<< 99 + rand() % 888 <<" 95=>"<< 99 + rand() % 888 <<endl;
	cout<<"93=>"<< 99 + rand() % 888 <<" 91=>"<< 99 + rand() % 888 <<" 90=>"<< 99 + rand() % 888 <<endl;
	cout<<"81=>"<< mix <<" 86=>"<< 99 + rand() % 888 <<" 85=>"<< 99 + rand() % 888 <<endl;
	cout<<"83=>"<< 99 + rand() % 888 <<" 80=>"<< 99 + rand() % 888 <<" 88=>"<< 99 + rand() % 888 <<endl;
	cout<<"78=>"<< 99 + rand() % 888 <<" 76=>"<< 99 + rand() % 888 <<" 75=>"<< 99 + rand() % 888 <<endl;
	cout<<"73=>"<< 99 + rand() % 888 <<" 72=>"<< mix <<" 70=>"<< 99 + rand() % 888 <<endl;
	cout<<"68=>"<< 99 + rand() % 888 <<" 66=>"<< 99 + rand() % 888 <<" 65=>"<< 99 + rand() % 888 <<endl;
	cout<<"63=>"<< mix <<" 61=>"<< 99 + rand() % 888 <<" 60=>"<< 99 + rand() % 888 <<endl;
	cout<<"58=>"<< 99 + rand() % 888 <<" 56=>"<< 99 + rand() % 888 <<" 55=>"<< 99 + rand() % 888 <<endl;
	cout<<"54=>"<< mix <<" 51=>"<< 99 + rand() % 888 <<" 50=>"<< 99 + rand() % 888 <<endl;
	cout<<"48=>"<< 99 + rand() % 888 <<" 46=>"<< 99 + rand() % 888 <<" 45=>"<< mix <<endl;
	cout<<"43=>"<< 99 + rand() % 888 <<" 41=>"<< 99 + rand() % 888 <<" 40=>"<< 99 + rand() % 888 <<endl;
	cout<<"38=>"<< 99 + rand() % 888 <<" 36=>"<< mix <<" 35=>"<< 99 + rand() % 888 <<endl;
	cout<<"33=>"<< 99 + rand() % 888 <<" 31=>"<< 99 + rand() % 888 <<" 30=>"<< 99 + rand() % 888 <<endl;
	cout<<"27=>"<< mix <<" 26=>"<< 99 + rand() % 888 <<" 25=>"<< 99 + rand() % 888 <<endl;
	cout<<"23=>"<< 99 + rand() % 888 <<" 21=>"<< 99 + rand() % 888 <<" 20=>"<< 99 + rand() % 888 <<endl;
	cout<<"18=>"<< mix <<" 16=>"<< 99 + rand() % 888 <<" 15=>"<< 99 + rand() % 888 <<endl;
	cout<<"13=>"<< 99 + rand() % 888 <<" 11=>"<< 99 + rand() % 888 <<" 10=>"<< 99 + rand() % 888 <<endl;
	cout<<"9=>" << mix <<"  8=>"<< 99 + rand() % 888 <<"  5=>"<< 99 + rand() % 888 <<endl;
	cout<<endl;
	system("pause");
	cout<<endl;
	cout<<endl;
	cout << "Вы загадали число:  " << mix <<endl;

	cout<<endl;
	system("pause");
	return 0;
}
Програмка загадка. "Угадывает" число.
Можно было сделать вместо цифр буквы но еще не дорос до этого)) Только начал изучать.
 

Последний раз редактировалось mixo44; 11.06.2013 в 13:36.
Пользователь вне форума    
  , 13:22   #20
НЕ ПРОВЕРЕН
 
Регистрация: 16.07.2012
Сообщений: 6

Репутация: 0 / 0
Smile

code:
  ///////////////
 /// BY M1X0 ///
///////////////
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
	cout<< " Решения Модуля." <<endl;
	cout<< " Выберите вид модуля..." <<endl;
	cout<< " 1. Модуль и цифра" <<endl;
	cout<< " 2. Модуль и переменная" <<endl;
	cout<< " 3. 2 модуля" <<endl;
	int ch,q;
	do {
		cout<<"Номер: ";
		cin>>ch;
		switch (ch)
		{
		case 1:
			break;
		case 2:
			break;
		case 3:
			break;
		}
	}while (ch != 1 && ch != 2 && ch != 3);

	if ( ch==1 )
	{
		cout<<endl;
		cout<< "Выберите вид модуля..."<<endl;
		cout<< "1. |aX + b| = c"<<endl;
		cout<< "2. |aX'' + bX + c| = k"<<endl;
		do {
		cout<<"Номер: ";
		cin>>q;
		switch (q)
		{
		case 1:
			break;
		case 2:
			break;
		}
		}
	while (q != 1 && q != 2);
	
		if ( q == 1 )
	{
		cout<<endl;
		cout<< " Введите данные упражнения. ( c - цифра)... " << endl;
		double m,k,a,b,c;
		cout<< " |aX + b| = c " <<endl;
		cout<< "a= ";
		cin>>a;
		cout<< "b= ";
		cin>>b;
		cout<< "c= ";
		cin>>c;
		m= ((c) - (b))/(a);
		k= (-(c) - (b))/(a);
		if ( c == 0 )
		{
			cout<<endl;
			cout<< "X= " << m <<endl;
		}
		else if ( c < 0 )
		{
			cout<<endl;
			cout<<"!!!!! datark bazm.."<<endl;
		}
		else
		{
			cout<<endl;
			cout<< "X= " << m <<endl;
			cout<< "X= " << k <<endl;
		}
		system ("pause");
		}
		if ( q == 2)
		{
			cout<<endl;
			cout<< " Введите данные упражнения.( k - цифра)... " << endl;
			double w,e,r,t,y,u,i,x1,x2,o,y1,y2;
			cout<< " |aX'' + bX + c| = k " <<endl;
			cout<< "a= ";
			cin>>w;
			cout<< "b= ";
			cin>>e;
			cout<< "c= ";
			cin>>r;
			cout<< "k= ";
			cin>>t;
			y=(r)-(t);
			u=(r)+(t);
			i= pow((pow(e,2)- 4*(w)*(y)),0.5);
			x1=(-(e)+i)/(2*w);
			x2=(-(e)-i)/(2*w);
			o= pow((pow(e,2)- 4*(w)*(u)),0.5);
			y1=(-(e)+o)/(2*w);
			y2=(-(e)-o)/(2*w);
			if ( x1 == x2 )
			{
				cout<<endl;
				cout<<" x= "<<x1<<endl;
			}
			else
			{
				cout<<endl;
				cout<<" x= "<<x1<<endl;
				cout<<" x= "<<x2<<endl;
			}
			if ( y1 == y2)
			{
				cout<<endl;
				cout<<" x= "<<y1<<endl;
			}
			else
			{
				cout<<endl;
				cout<<" x= "<<y1<<endl;
				cout<<" x= "<<y2<<endl;
			}
			system ("pause");
		}
	}
	if ( ch ==2 )
	{
		int p;
		cout<<endl;
		cout<< "Выберите вид модуля..."<<endl;
		cout<< "1. |aX + b| = eX + m "<<endl;
		cout<< "2. aX'' + b|X| + c = 0 "<<endl;
		do {
			cout<<"Номер: ";
			cin>>p;
			switch (p)
			{
				case 1:
					break;
				case 2:
					break;
			}
		}while ( p != 1 && p != 2 );
	
	if ( p == 1 )
	{
		cout<<endl;
		cout<< " Введите данные упражнения... " << endl;
		double f,g,h,j,k,q1,q2;
		cout<< "1. |aX + b| = eX + m "<<endl;
		cout<<" a= ";
		cin>>f;
		cout<<" b= ";
		cin>>g;
		cout<<" e= ";
		cin>>h;
		cout<<" m= ";
		cin>>j;
		k=(-(g))/f;
		q1=((j)-(g))/((f)-(h));
		q2=((j)+(g))/(-(f)-(h));
		if ( k <= q1 )
		{
			cout<<endl;
			cout<<"x= "<< q1 <<endl;
		}
		if ( k > q2 )
		{
			cout<<endl;
			cout<<"x= "<< q2 <<endl;
		}
		system ("pause");
	}
	if ( p == 2 )
	{
		cout<<endl;
		cout<< " Введите данные упражнения... " << endl;
		double Q,W,E,R,w1,w2,I,e1,e2;
		cout<< "1. aX'' + b|X| + c = 0 "<<endl;
		cout<<" a= ";
		cin>>Q;
		cout<<" b= ";
		cin>>W;
		cout<<" c= ";
		cin>>E;
		R = pow((pow((W),2) - 4 * (Q) * (E)),0.5);
		w1 = (-(W)+(R))/(2*(Q));
		w2 = (-(W)-(R))/(2*(Q));
		if ( w1 == w2 && w1>0 )
		{
			cout<<endl;
			cout<<" x= "<<w1<<endl;
		}
		if ( w1 > 0 )
		{
			cout<<endl;
			cout<<" x= "<<w1<<endl;
		}
		if ( w2 > 0 )
		{
			cout<<endl;
			cout<<" x= "<<w2<<endl;
		}
		I = pow((pow((W),2) - 4 * (Q) * (E)),0.5);
		e1 = (-(-(W))+(I))/(2*(Q));
		e2 = (-(-(W))-(I))/(2*(Q));
		if ( e1 == e2 && e1 < 0 )
		{
			cout<<endl;
			cout<<" x= "<<e1<<endl;
		}
		if ( e1 < 0 )
		{
			cout<<endl;
			cout<<" x= "<<e1<<endl;
		}
		if ( e2 < 0 )
		{
			cout<<endl;
			cout<<" x= "<<e2<<endl;
		}
		system ("pause");
	}
	}
	if ( ch ==3 )
	{
		int M1;
		cout<<endl;
		cout<< "Выберите вид упражнения..."<<endl;
		cout<< "1. |aX + b| = |cX + d| "<<endl;
		do {
			cout<<"Номер: ";
			cin>>M1;
			switch (M1)
			{
				case 1:
					break;
			}
		}while ( M1 != 1 );

		if ( M1 == 1 )
		{
		double Z,C,V,B,N,M,F,G,K,L;
		cout << " Введите данные упражнения... " <<endl;
		cout << " |ax + b| = |cX + d| "<<endl;
		cout << " a= ";
		cin>>Z;
		cout << " b= ";
		cin>>C;
		cout << " c= ";
		cin>>V;
		cout << " d= ";
		cin>>B;
		N = (Z) - (V);
		M = (C) - (B);
		F = (Z) + (V);
		G = (C) + (B);
		K = (-(M))/(N);
		L = (-(G))/(F);
		cout<<endl;
		cout << "X= " << K <<endl;
		cout << "X= " << L <<endl;
		system ("pause");
		}
	}
	return 0;
}
Уже говорил что чайник но прога работает... До классов еще не дошел.
P.S. программка решает несколько видов модулей..
 

Последний раз редактировалось mixo44; 13.06.2013 в 21:18.
Пользователь вне форума    
  , 12:16   #21
Постоянный
 
Аватар для Zooma
 
Локация: Империя Зла
Регистрация: 03.07.2010
Сообщений: 588

Репутация: 54 / 1
По умолчанию

C++ highlight
#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
    while (1) {:)
        cout << 2 * rand() / RAND_MAX << " ";
    }
    return 0;
}
Бесконечный вывод 1 и 0 в консоле. Так... баловство.
__________________
ಠ_ಠ
Пользователь вне форума    
  , 14:36   #22
Продвинутый
 
Аватар для BlackH
 
Локация: underworld
Регистрация: 05.12.2011
Сообщений: 1,606

Репутация: 167 / 3
По умолчанию

Кто-то ц++ начал изучать?))
Ладно,коль зашел -тож оставлю тут кусочек кода.
Простенький микро-DownLoder.Качает фаил по ссылке и всё.Можно было бы прикрутить запуск скаченного фаила(1 API)но мне это не нужно.
Компилил в VS2010,с моими настройками на выходе получается EXEшник в 2кб(всё на APIшках).
Всё работает,проверено не раз.

C++ highlight
#include <Windows.h>
#include <winsock.h>
#include <wininet.h>


int main(){


    HINTERNET hSession, hUrl;
    CHAR szBuffer [2048];
    HANDLE hFile;
    DWORD dwBytesRead, dwBytesWritten;
    CHAR *szFileName = "http://priv8.ru/archive/krab.rar";
    CHAR *szSaveName = "C:\\semple.rar";

    hSession = InternetOpenA(0,INTERNET_OPEN_TYPE_DIRECT,0,0,0);

    if (hSession == NULL)
    {
	    return 1;
    }

    hUrl = InternetOpenUrlA(hSession,szFileName,0,0,0,0);
    if (hUrl == NULL)
    {
	    return 1;
    }

    hFile = CreateFileA(szSaveName,
		                GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE,
					    0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

    if (hFile == NULL)
    {
	    return 1;
    }

    do 
    {
	    if (InternetReadFile(hUrl,&szBuffer,sizeof(szBuffer),&dwBytesRead))
	    {
            if (dwBytesRead != 0)
			    if (!WriteFile(hFile, szBuffer, dwBytesRead, &dwBytesWritten, NULL))
			    {
				    return 1;
			    }
	    }
	    else
	    {
		   return 1;
	    }
    }

    while (dwBytesRead != 0);

    CloseHandle(hFile);
    InternetCloseHandle(hUrl);
    InternetCloseHandle(hSession);
    return 0;
}
Ps
В сорсе ссылка на скачку исходников карбера,весят много,ссылку измените если тестить будете)а то пол дня ждать будете)
__________________
Вангую..
Пользователь вне форума    
  , 15:57   #23
Постоянный
 
Аватар для Zooma
 
Локация: Империя Зла
Регистрация: 03.07.2010
Сообщений: 588

Репутация: 54 / 1
По умолчанию

Цитата:
Сообщение от BlackH Посмотреть сообщение
Кто-то ц++ начал изучать?))
Это да
Чтобы скомпилировать твою программу мне понадобилось добавить в опции компоновщика
code:
-lWininet
Дабы никому не гугхлить. У меня получилось 9 кб, codeblocks 12.11 без настроек.
Видел такой пример на fasm'e, там 1 кб ровно получается.
http://forum.k0d.cc/showthread.php?t=9405
__________________
ಠ_ಠ
Пользователь вне форума    
  , 18:36   #24
Продвинутый
 
Аватар для BlackH
 
Локация: underworld
Регистрация: 05.12.2011
Сообщений: 1,606

Репутация: 167 / 3
По умолчанию

Да да, у меня и на Фасме есть такое.Обычно с языков высокого уровня переводят кодесы а у меня на оборот т.к изначально асм познавал)

К стати 1кб это не есть тру.Получается что всё находится в одной секции:Код,данные,импорт\експорт - аверы будут орать на такую прогу,даже если там будет тупо просто: xor eax,eax .

Минимум две секции нужно делать,чтоб всё в ёлочку было.Ну и соответственно флаги у секций должны быть правильные.Студия это всё сама делает по дефолту а вот фасм -нет.
__________________
Вангую..
Пользователь вне форума    
  , 15:00   #25
Jedi Knight
 
Аватар для vladyxa13
 
Локация: Планета Земля
Регистрация: 03.04.2013
Сообщений: 1,120

Репутация: 227 / 4
Lightbulb Операции связаные с кругом и окружностью

C++ highlight
// (c) vladyxa13
#include <iostream>
#include <locale>
#include <conio.h>
using namespace std;

int main (){
	setlocale(LC_ALL, "rus");//Переводим консольку на русский
			
		const double P = 3.14;//Число "пи"
		const double tou_P = P*2;// "2пи"
		double L,S;
		double R = 0;//Радиус
		
		cout << "Введите число R: " << endl;
		cin >> R;//Вводим радиус

		
		
		L = tou_P*R;//Вычисляем окружность
		S = P*(R*R);//Площадь круга

		
		cout << "" << endl;//Пустой код хрен знает для чего добавил, единственная цель переход на новую строку.
		cout << "L равно: " << L << endl;
		cout << "S равно: " << S << endl;

  
  _getch();//Останавливаем консоль
  return 0;//Возвращаем нуль
}
__________________

Профессия тыже программист очень популярная!
Почини колонку, тыже программист. Достань кота с дерева тыже программист! ...

Никогда ее не забуду http://www.youtube.com/watch?v=OH15GOMvYUs [►], на ней вырос...

Последний раз редактировалось vladyxa13; 18.09.2013 в 08:23.
Пользователь вне форума    
  , 18:36   #26
Jedi Knight
 
Аватар для vladyxa13
 
Локация: Планета Земля
Регистрация: 03.04.2013
Сообщений: 1,120

Репутация: 227 / 4
По умолчанию Калькулятор

Пример из книги Герберта Шилдта - Полный справочник по С++.

C++ highlight
//////////////////////     /////////////////////////////////////////////
//Автор:  Герберт Шилт/////Книга: Полный справочник по С++ 4-е издание//
/////////////////////    ///////////////////////////////////////////////
       //                                                  //
	////////////////////////////////////////////////////  //
	//Перевод коментариев и редактиирование: vladyxa13/////
    ////////////////////////////////////////////////////

/*Программа, выполняющая рекурсивный нисходящий анализ
выражений, не содержащих переменные.
Проще говоря калькулятор. Полноценный калькулятор.*/


#include <iostream>
#include <cstdlib>
#include <cctype>
#include <cstring>
#include <locale>

using namespace std;

enum types { DELIMITER = 1, VARIABLE, NUMBER};

class parser {
  char *exp_ptr;  // Ссылается на выражение.
  char token[80]; // Хранит текущую лексему
  char tok_type;  // Хранит тип лексемы

  void eval_exp2(double &result);
  void eval_exp3(double &result);
  void eval_exp4(double &result);
  void eval_exp5(double &result);
  void eval_exp6(double &result);
  void atom(double &result);
  void get_token();
  void serror(int error);
  int isdelim(char c);
public:
  parser();
  double eval_exp(char *exp);
};

// Конструктор синтаксического анализатора
parser::parser()
{
  exp_ptr = NULL;
}

// Отправная точка синтаксического анализатора
double parser::eval_exp(char *exp)
{
  double result;

  exp_ptr = exp;

  get_token();
  if(!*token) {
    serror(2); // Выражение пусто
    return 0.0;
  }
  eval_exp2(result);
  if(*token) serror(0); // Последней лексемой должен быть нулевой символ
  return result;
}

// Складываем или вычитаем два терма
void parser::eval_exp2(double &result)
{
  register char op;
  double temp;

  eval_exp3(result);
  while((op = *token) == '+' || op == '-') {
    get_token();
    eval_exp3(temp);
    switch(op) {
      case '-':
        result = result - temp;
        break;
      case '+':
        result = result + temp;
        break;
    }
  }
}
// Умножаем или делем два фактора
void parser::eval_exp3(double &result)
{
  register char op;
  double temp;

  eval_exp4(result);
  while((op = *token) == '*' || op == '/' || op == '%') {
    get_token();
    eval_exp4(temp);
    switch(op) {
      case '*':
        result = result * temp;
        break;
      case '/':
        result = result / temp;
        break;
      case '%':
        result = (int) result % (int) temp;
        break;
    }
  }
}

// Возведение в степень
void parser::eval_exp4(double &result)
{
  double temp, ex;
  register int t;

  eval_exp5(result);
  if(*token== '^') {
    get_token();
    eval_exp4(temp);
    ex = result;
    if(temp==0.0) {
      result = 1.0;
      return;
    }
    for(t=(int)temp-1; t>0; --t) result = result * (double)ex;
  }
}

// Вычисление унарных операций + или -
void parser::eval_exp5(double &result)
{
  register char  op;

  op = 0;
  if((tok_type == DELIMITER) && *token=='+' || *token == '-') {
    op = *token;
    get_token();
  }
  eval_exp6(result);
  if(op=='-') result = -result;
}

// Распознание скобок
void parser::eval_exp6(double &result)
{
  if((*token == '(')) {
    get_token();
    eval_exp2(result);
    if(*token != ')')
      serror(1);
    get_token();
  }
  else atom(result);
}

// Получает число
void parser::atom(double &result)
{
  switch(tok_type) {
    case NUMBER:
      result = atof(token);
      get_token();
      return;
    default:
      serror(0);
  }
}

// Выводит сообщение о синтаксической ошибке
void parser::serror(int error)
{
  static char *e[]= {
      "Синтаксическая ошибка!!!",
      "Нарушен баланс скобок!!!",
      "Выражение пусто!!!"
  };
  cout << e[error] << endl;
}

// Извлекает следущую лексему
void parser::get_token()
{
  register char *temp;

  tok_type = 0;
  temp = token;
  *temp = '\0';

  if(!*exp_ptr) return; // В конце выражения

  while(isspace(*exp_ptr)) ++exp_ptr; // Пропуск разделителя

  if(strchr("+-*/%^=()", *exp_ptr)){
    tok_type = DELIMITER;
    //Переход на следуйщий символ
    *temp++ = *exp_ptr++;
  }
  else if(isalpha(*exp_ptr)) {
    while(!isdelim(*exp_ptr)) *temp++ = *exp_ptr++;
    tok_type = VARIABLE;
  }
  else if(isdigit(*exp_ptr)) {
    while(!isdelim(*exp_ptr)) *temp++ = *exp_ptr++;
    tok_type = NUMBER;
  }

  *temp = '\0';
}

// Если параметр с является разделителем, возвращает значение тру
int parser::isdelim(char c)
{
  if(strchr(" +-/*%^=()", c) || c==9 || c=='\r' || c==0)
    return 1;
  return 0;
}


int main()
{
		setlocale(LC_ALL, "rus");//Переводим консольку на русский

	char expstr[80];

  cout << "\t\t\tКалькулятор\n\n";
  cout << "Распознает выражения +,-,*,/,%,=,(),^ где ^ возвединие в степень.\n";
  cout << "Введите \".\" что бы выйти.\n\n";

  parser ob; // Создание анализатора.

  for(;;) {
    cout << "Введите выражение: ";
    cin.getline(expstr, 79);
    if(*expstr=='.') break;
    cout << "Ответ: " << ob.eval_exp(expstr) << "\n\n";
  };

  return 0;
}
__________________

Профессия тыже программист очень популярная!
Почини колонку, тыже программист. Достань кота с дерева тыже программист! ...

Никогда ее не забуду http://www.youtube.com/watch?v=OH15GOMvYUs [►], на ней вырос...
Пользователь вне форума    
  , 20:06   #27
Jedi Knight
 
Аватар для vladyxa13
 
Локация: Планета Земля
Регистрация: 03.04.2013
Сообщений: 1,120

Репутация: 227 / 4
Arrow Каклькулятор

Калькулятор v 0.1
C++ highlight
// (c) vladyxa13
#include <iostream>
#include <conio.h>
#include <locale>

using namespace std;

int main (){
	setlocale(LC_ALL, "rus");
			
		cout << "\t\t***Калькулятор***\n\n";
		
			cout << "Выполняет операции  +,-,*,/\n\n ";
			
			cout << "Введите число_операцию_число:";
			double a,b;
			char op;
			cin >> a >> op >> b;
				cout << "Результат: ";
			switch(op){
					case '+': cout << a+b << endl; break;
					case '-': cout << a-b << endl; break;
					case '*': cout << a*b << endl; break;
					case '/': cout << a/b << endl; break;
				
					default: cout << "Неверная операция";
				}
  
  
  _getch();
  return 0;
}


Калькулятор v 0.2
C++ highlight
// (c) vladyxa13
#include <iostream>
#include <conio.h>
#include <locale>

using namespace std;

int main (){
	setlocale(LC_ALL, "rus");
			
		cout << "\t\t***Калькулятор***\n\n";
		
			cout << "Выполняет операции  +,-,*,/\n\n ";
					
				cout << "Введите число_операцию_число: ";
				
			double a,b;
			char op;
			cin >> a >> op >> b;
				
			switch(op){
					case '+': cout << "Результат: " << a+b << endl << endl; break;
					case '-': cout << "Результат: " << a-b << endl << endl; break;
					case '*': cout << "Результат: " << a*b << endl << endl; break;
					case '/': try {
									if(!b) throw b;
									cout << "Результат: " << a/b << endl << endl; 
							  } catch ( double b) {
									cout << "Делить на нуль нельзя!\n";
							  } break;
						
					default: cout << "Неверная операция.";
				}
			
					
  _getch();
  return 0;
}
Теперь используется проверка деления на нуль, реализована обработкой исключительных ситуаций.
__________________

Профессия тыже программист очень популярная!
Почини колонку, тыже программист. Достань кота с дерева тыже программист! ...

Никогда ее не забуду http://www.youtube.com/watch?v=OH15GOMvYUs [►], на ней вырос...

Последний раз редактировалось vladyxa13; 18.09.2013 в 08:23.
Пользователь вне форума    
  , 08:12   #28
Jedi Knight
 
Аватар для vladyxa13
 
Локация: Планета Земля
Регистрация: 03.04.2013
Сообщений: 1,120

Репутация: 227 / 4
По умолчанию Тру vs Фолс

C++ highlight
// (c) vladyxa13
#include<conio.h>
#include<iostream>

using namespace std;
	
	
	bool xor(bool a, bool b );// XOR

	int main(){ 
		
		bool a = false , b = true;
	cout <<"a= "<< a <<",b= "<< b <<endl << endl;//Исхоные значения в виде одиницы и нуля

			cout.setf(ios_base::boolalpha);//Устанавлюем флаг булалфа, 1 = тру 0 = фолс
		
		cout << "a= " << a << ",b= " << b << endl << endl;//тру фолс, без 0 и 1

					/*Логическое НЕ	!*/	

			cout << "!a= " << (!a) << ",!b= " << (!b) << endl << endl;
		
		 /*Остальные операторы ect.*/
		cout << "a <= b: " << (a <= b) << endl;
		cout << "a >= b: " << (a >= b) << endl;
		cout << "a == b: " << (a == b) << endl;
		cout << "a != b: " << (a != b) << endl;
		cout << "a < b: " << (a < b) << endl;
		cout << "a > b: " << (a > b) << endl << endl;
			
				/*Логическое ИЛИ ||*/

			b = false;
		cout << a << " || " << b << " = " << (a||b) << endl;

			b = true;
		cout << a << " || " << b <<" = " <<(a||b) << endl;////или  или  газировка =/

			a = true; b = false;
		cout << a << " || " << b << " = " << (a||b) << endl;

			b = true;
		cout << a << " || " << b << " = " << (a||b) << endl << endl << endl;	
				
				/*Логическое И &&*/

			a = false; b = false;
		cout<<a<<" && "<<b<<" = "<<(a&&b)<<endl;

			b = true;
		cout<<a<<" && " << b << " = "<<(a&&b) << endl;

			a = true; b = false;
		cout << a <<" && " << b << " = " << (a&&b) << endl;//и шоколадку и газировку =)

			b = true;
		cout << a << " && " << b << " = " << (a&&b) << endl << endl;

		/* Исключительное ИЛИ (XOR)*/

		a = true, b = false;
		cout << xor(a, b) << endl;

		b = true;
		cout << xor(a, b) << endl;

		a = false;
		cout << xor(a, b) << endl;

		b = false;
		cout << xor(a, b);



	_getch();
	return 0;//успешное завершение программы
}
	bool xor(bool a, bool b){

		return (a||b) && !(a&&b);

	}
__________________

Профессия тыже программист очень популярная!
Почини колонку, тыже программист. Достань кота с дерева тыже программист! ...

Никогда ее не забуду http://www.youtube.com/watch?v=OH15GOMvYUs [►], на ней вырос...

Последний раз редактировалось vladyxa13; 18.09.2013 в 08:22.
Пользователь вне форума    
  , 08:20   #29
Jedi Knight
 
Аватар для vladyxa13
 
Локация: Планета Земля
Регистрация: 03.04.2013
Сообщений: 1,120

Репутация: 227 / 4
По умолчанию Манипуляторы

C++ highlight
// (c) vladyxa13
#include <iostream>
#include <iomanip>
#include <conio.h>

using namespace std;

//Мвнипуляторы вывода

//Выводит стрелку в право
ostream &ra(ostream &stream){

  stream << "-------> ";
  return stream;
}

// Выводит стрелку в лево
ostream &la(ostream &stream){
  
	stream << " <-------";
	return stream;
}

//Выводит табы
ostream &z(ostream &stream){

	stream << "\t\t\t";
	return stream;
}

int main(){
  
		setlocale(LC_ALL, "rus");

	cout << z << "www.hpc.name\n";
	cout << "Продали" << ra << 40 << "\n";
	cout << "Осталось" << ra << 25 << la;
	

	_getch();//остановка консоли
	return 0;//успешное завершение проги
}
__________________

Профессия тыже программист очень популярная!
Почини колонку, тыже программист. Достань кота с дерева тыже программист! ...

Никогда ее не забуду http://www.youtube.com/watch?v=OH15GOMvYUs [►], на ней вырос...
Пользователь вне форума    
  , 09:34   #30
Jedi Knight
 
Аватар для vladyxa13
 
Локация: Планета Земля
Регистрация: 03.04.2013
Сообщений: 1,120

Репутация: 227 / 4
По умолчанию Файловый ввод и вывод

Вывод
C++ highlight
// (c) vladyxa13
#include <iostream>
#include <conio.h>
#include <locale>
#include <fstream>

using namespace std;

int main (){
	setlocale(LC_ALL, "rus");//Консоль на гусский =)
			
		ofstream fout;//Создаем объект класса ofstream, назвать можно как угодно, но легче 
					  //запомнить fout - файловый вывод. 
		fout.open("Name file.txt");//Создаем текстовый файл и называем его Name file.txt

		fout << "Привет с hpc.name\n " ;//Открываем файл  Name file.txt и записываем в него эту строку,
										//fout - работает как cout, но только с файлами

	fout.close();

		
  _getch();
  return 0;
}
Ввод

C++ highlight
// (c) vladyxa13
#include <iostream>
#include <conio.h>
#include <locale>
#include <fstream>

using namespace std;

int main (){
	setlocale(LC_ALL, "rus");//Консоль на гусский =)
	

		ifstream fin;//Создаем объект класса ifstream, назвать можно как угодно, но легче 
					  //запомнить fin - файловый ввод. 
		fin.open ("Name file.txt");//Открываем текстовый файл Name file.txt

		if(!fin.is_open()){

			cout << "Такого файла не существует!!!";//Если файл не найден
			return -1;//Возврвщаем значение -1 выходим из программы
		}

		char a[15];//Создаем массив из 15 элиментов типа char
		register int i;//Создаем переменную регистра i
		
		for(int i(0); i<15; i++)//Выводим строку "Привет с hpc.name "
		{
			fin >> a[i];
			cout << a[i] ;
		}

		
  _getch();
  return 0;
}
Вывод и Ввод - делаем кашку

C++ highlight
// (c) vladyxa13
#include <iostream>
#include <conio.h>
#include <locale>
#include <fstream>

using namespace std;

int main (){
	setlocale(LC_ALL, "rus");//Консоль на гусский =)
			
		ofstream fout;//Создаем объект класса ofstream, назвать можно как угодно, но легче 
					  //запомнить fout - файловый вывод. 
		fout.open("Name file.txt");//Создаем текстовый файл и называем его Name file.txt

		fout << "Привет с hpc.name " ;//Открываем файл  Name file.txt и записываем в него эту строку,
										//fout - работает как cout, но только с файлами
                fout.close();
		ifstream fin;//Создаем объект класса ifstream, назвать можно как угодно, но легче 
					  //запомнить fin - файловый ввод. 
		fin.open ("Name file.txt");//Открываем текстовый файл Name file.txt

		if(!fin.is_open()){

			cout << "Такого файла не существует!!!";//Если файл не найден
			return -1;//Возврвщаем значение -1 выходим из программы
		}

		char a[15];//Создаем массив из 15 элиментов типа char
		register int i;//Создаем переменную регистра i
		
		for(int i(0); i<15; i++)//Выводим строку "Привет с hpc.name "
		{
			fin >> a[i];
			cout << a[i] ;
		}

		
  _getch();
  return 0;
}
Файл Name file.txt можно назвать как угодно, но надо не забыть поставить расширение .txt.

P.S Искать файл Name file.txt в директории, где находиться спп файл. В моем случае это C:\Documents and Settings\Admin\Мои документы\Visual Studio 2010\Projects\C++ learn\fstream , я юзаю вижуалку 2010.
__________________

Профессия тыже программист очень популярная!
Почини колонку, тыже программист. Достань кота с дерева тыже программист! ...

Никогда ее не забуду http://www.youtube.com/watch?v=OH15GOMvYUs [►], на ней вырос...

Последний раз редактировалось vladyxa13; 20.09.2013 в 16:11.
Пользователь вне форума    

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заработок, выполняя довольно простые задания! WORKZILLA crazyr Раздачи 15 20.04.2013 09:29
Простые вредоносные скрипты Shade JavaScript 8 15.10.2011 09:10
Microsoft запрещает простые пароли на почтовом сервисе Hotmail CyberComrade Архив новостей 0 16.07.2011 08:28
Twitter запретил использовать простые слова в качестве паролей VBS Архив новостей 0 05.01.2010 08:49



Часовой пояс GMT +2
Powered by vBulletin® 3.x.x Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.

Copyright © 2008 - 2013 «HPC» Реклама на сайте Правила Форума Пользовательское соглашение Работа на сайте
При копировании материалов ставьте ссылку на источник
Все материалы представлены только в ознакомительных целях, администрация за их использование ответственности не несет.