Ребят, такой вопрос, я начал изучать язык C++ но, в учебных материал, тобись стати, книги, и там все говорят, прежде чем изучать язык C++ изучите сначала С. Так как быть продолжать изучать С++ или идти к истокам С?
Вопрос таков, как в консольном приложении на С++ отключить отображение самого консольного окна. Есть программа, которая пишет некие данные в файл, дак вот при запуске быстро проскакивает консоль, как бы отключить все это дело?)
Создать Windows Application без окна, либо такой вот кодес с использованием winapi: Code: HWND console = GetConsoleWindow(); if (console) ShowWindow(console,SW_HIDE /*SW_SHOW*/); Если используется qt, то в .pro файл добавить "CONFIG -= console" и пересобрать проект.
Я написал код калькулятора, скомпилировал его и скомпоновал, а у меня вылетают ошибки. Работаю в Визуал Студио 2010 Ультимейт. Подскажите в чем я ошибся! #include "stdafx.h" #include "iostream" #include "map" #include "cctype" #include "sstream" #include "conio.h" using namespace std; int main() { int 0; map string,double table; double number value; string string value; int no of strings=0; cout<<"'+',MINUS='-',MUL='*',DIV='/',"; cout<<"',',ASSIGN='=',LP='(',RP=')'"; void; double term(bool get); double prim(bool get); double expr(bool get); int error(const string &s); void; double expr(bool get); double left=term(get); for(; switch; case "+": left+=term(true)break; case "-": left-=term(true)break; default: return left; double term(bool get); double left=prim(get); for(; switch(curr_tok); case MUL : left*=prim(true);break; case DIV : if(double d=prim(true); left/=d; break; return error("DIVIZION BY ZERO"); default : return left; int main() double prim(bool get) if(get)get token(); switch(curr tok); case NUMBER: double v=number value; get token(); return v; case DESK2: double&v=table[string value]; if(get token()==ASSIGN)v=expr(true); return v; case "-": return -prim(true); case LP: double e=expr(true); if(curr tok!=RP)return error(") EXPECTED"); get token(); return e; default : return error("PRIMARY EXPRESSION EXPECTED"); char ch=0; do{if(!input->get(ch))return curr tok=END;} while(ch!='\n'&&isspace(ch)); switch(ch); case 0 : return curr tok=END; case ':': case '*': case '/': case '+': case '-': case '(': case ')': case '=' : return curr tok=Token value(ch); case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '.' : input->putback(ch); *input>>number value; return curr tok=NUMBER; case ';' : case '\n' : no of strings++; return curr tok=PRINT; default : if (isalpha(ch)); string value=ch; while(input->get(ch)&&isalpha(ch)) string value.push back(ch); input->putback(ch); return curr tok=NAME; error("INCORECT WORD"); return curr tok=PRINT; no of errors++; cerr<<no of strings<<" :-: ERROR:"<<s<<'\n'; return 1; switch(argc); case 1: input=&cin; break; case 2: input=new istringstream(argv[1]); break; default: error("To mach parameters!!!"); return 1; table ["pi"]=3.1415926535897932385; table["e"] =2.7128272824590452354; while(input) get token(); if(curr tok==END)break; if(curr tok==PRINT)continue; cout<<expr(false)<<'\n'; if(input!=&cin)delete input; system("pause"); return 0; } Каждый раз выводит такую ошибку: 1>------ Построение начато: проект: Calculate1, Конфигурация: Debug Win32 ------ 1>Построение начато 08.09.2015 10:12:28. 1>ClCompile: 1> Calculate1.cpp 1>Calculate1.cpp(1): fatal error C1083: Не удается открыть файл предкомпилированный заголовок: Debug\Calculate1.pch: No such file or directory 1> 1>СБОЙ построения. 1> 1>Затраченное время: 00:00:03.18 ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Есть такой код Code: #include <stdio.h> #include <stdlib.h> #include <memory.h> #include "sizeoffunc.h" int foo(void) { int x = 123; // printf("foo\n"); return (x); } int boo(void) { return (10); } int main (int argc, char *argv[]) { char buf[512]; memcpy(buf, foo, boo - foo); int (*f)() = (int (*)())buf; (int)(*f)(); return (0); } Компилятор gcc. Если раскомментить printf("foo\n"); падает с Segmentation fault Не понимаю почему так происходит. объясните кто может заранее благодарен
Это из за относительной адресации при вызове функции. Пиши примерно так (для MSVC): //... typedef void (*ptrPrintf)(char*, ...); int foo(void) { volatile ptrPrintf Pf = (ptrPrintf)printf; int x = 123; Pf("foo\n"); return (x); } //...
PHP: #include <stdio.h>void func(int *var){ *var = *var+1; }int main () { int sum = 0; func(&sum); printf("sum is: %d\n", sum); } Почему вместо *var = *var+1; я не могу написать например *var++;
Ребят, вопрос относительно создания рандомизатора. Задача: нужно сделать рандомизатор событий, которые выпадают случайно, но с условием. Т. е. вероятность выпадения первого события 5%, второго - 30% и т.д. Т. е. данные события выпадют случайно, но с определенной вероятностью выпадения. Спасибо.
1. Для каждого события создать массив из 100 элементов. 2. Заполнить массивы событиями- для 5 процентного пять событий, для 30 процентного 30, итд. 3. event = array[rand % 100];