[ C / C++ ] — начинающим: задаем вопросы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by begin_end, 28 Apr 2015.

  1. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    http://www.cplusplus.com/
     
    1. GRRRL Power

      GRRRL Power Elder - Старейшина

      Joined:
      13 Jul 2010
      Messages:
      823
      Likes Received:
      185
      Reputations:
      84
      Еще http://cppreference.com
       
      1. Archi

        Archi New Member

        Joined:
        14 Jul 2015
        Messages:
        32
        Likes Received:
        1
        Reputations:
        0
        Ребят, такой вопрос, я начал изучать язык C++ но, в учебных материал, тобись стати, книги, и там все говорят, прежде чем изучать язык C++ изучите сначала С. Так как быть продолжать изучать С++ или идти к истокам С?
         
        1. #colorblind

          #colorblind Moderator

          Joined:
          31 Jan 2014
          Messages:
          637
          Likes Received:
          246
          Reputations:
          42
          Учи с++ дальше, только выбери другое пособие, без таких советов :)
           
          Fanavana likes this.
          1. Peklots

            Peklots Elder - Старейшина

            Joined:
            28 Sep 2008
            Messages:
            281
            Likes Received:
            144
            Reputations:
            36
            Вопрос таков, как в консольном приложении на С++ отключить отображение самого консольного окна.
            Есть программа, которая пишет некие данные в файл, дак вот при запуске быстро проскакивает консоль, как бы отключить все это дело?)
             
            1. i~DOS

              i~DOS Member

              Joined:
              26 Mar 2009
              Messages:
              42
              Likes Received:
              40
              Reputations:
              4
              Создать Windows Application без окна, либо такой вот кодес с использованием winapi:
              Code:
              HWND console = GetConsoleWindow();
              if (console)
                  ShowWindow(console,SW_HIDE /*SW_SHOW*/);
              
              Если используется qt, то в .pro файл добавить "CONFIG -= console" и пересобрать проект.
               
              Ins3t and Peklots like this.
              1. Diman56

                Diman56 New Member

                Joined:
                12 Oct 2012
                Messages:
                12
                Likes Received:
                4
                Reputations:
                0
                Winapi,winsock хочу разобрать на си. Как сами учились?
                 
                1. i~DOS

                  i~DOS Member

                  Joined:
                  26 Mar 2009
                  Messages:
                  42
                  Likes Received:
                  40
                  Reputations:
                  4
                  По winapi: классика от Петцольда (Том1, Том2). По сетям, думаю, этого должно хватить.
                   
                  1. todSchmidt1986

                    todSchmidt1986 New Member

                    Joined:
                    4 Sep 2015
                    Messages:
                    1
                    Likes Received:
                    0
                    Reputations:
                    0
                    Я написал код калькулятора, скомпилировал его и скомпоновал, а у меня вылетают ошибки.
                    Работаю в Визуал Студио 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 ==========
                     
                    1. SekirBoshka

                      SekirBoshka Member

                      Joined:
                      25 May 2012
                      Messages:
                      77
                      Likes Received:
                      28
                      Reputations:
                      0
                      Тебе программа сама написала ошибку и где её искать.
                       
                      1. Ins3t

                        Ins3t Харьковчанин

                        Joined:
                        18 Jul 2009
                        Messages:
                        939
                        Likes Received:
                        429
                        Reputations:
                        139
                        выпили прекомпайлед хидеры, зачем они тебе вообще
                         
                        1. Win_Dox

                          Win_Dox New Member

                          Joined:
                          15 Sep 2015
                          Messages:
                          1
                          Likes Received:
                          0
                          Reputations:
                          0
                          Доброго времени суток! Как можно посчитать площадь круга составленого из квадратов(пиксилей)?
                           
                          1. #colorblind

                            #colorblind Moderator

                            Joined:
                            31 Jan 2014
                            Messages:
                            637
                            Likes Received:
                            246
                            Reputations:
                            42
                            1 пиксель = 0.2645833333333 миллиметр
                            вот и считай количество пикселей внутри круга
                             
                            1. binarymaster

                              binarymaster Elder - Старейшина

                              Joined:
                              11 Dec 2010
                              Messages:
                              4,717
                              Likes Received:
                              10,195
                              Reputations:
                              126
                              Зависит от DPI системы/адаптера/монитора :)
                               
                              Fanavana likes this.
                              1. c1wd

                                c1wd New Member

                                Joined:
                                2 Oct 2015
                                Messages:
                                3
                                Likes Received:
                                1
                                Reputations:
                                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
                                Не понимаю почему так происходит. объясните кто может заранее благодарен
                                 
                                1. neviens

                                  neviens Member

                                  Joined:
                                  9 Oct 2013
                                  Messages:
                                  82
                                  Likes Received:
                                  28
                                  Reputations:
                                  3
                                  Это из за относительной адресации при вызове функции.
                                  Пиши примерно так (для MSVC):
                                  //...
                                  typedef void (*ptrPrintf)(char*, ...);

                                  int foo(void) {
                                  volatile ptrPrintf Pf = (ptrPrintf)printf;

                                  int x = 123;
                                  Pf("foo\n");
                                  return (x);
                                  }
                                  //...
                                   
                                  c1wd likes this.
                                  1. -=Dem0n=-

                                    -=Dem0n=- Elder - Старейшина

                                    Joined:
                                    15 Mar 2007
                                    Messages:
                                    66
                                    Likes Received:
                                    5
                                    Reputations:
                                    0
                                    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++;
                                     
                                    1. GRRRL Power

                                      GRRRL Power Elder - Старейшина

                                      Joined:
                                      13 Jul 2010
                                      Messages:
                                      823
                                      Likes Received:
                                      185
                                      Reputations:
                                      84
                                      А ты напиши (*var)++. Все дело в приоритете операторов.
                                       
                                      binarymaster likes this.
                                      1. SFake

                                        SFake Member

                                        Joined:
                                        28 Jan 2009
                                        Messages:
                                        3
                                        Likes Received:
                                        11
                                        Reputations:
                                        0
                                        Ребят, вопрос относительно создания рандомизатора. Задача: нужно сделать рандомизатор событий, которые выпадают случайно, но с условием. Т. е. вероятность выпадения первого события 5%, второго - 30% и т.д. Т. е. данные события выпадют случайно, но с определенной вероятностью выпадения. Спасибо.
                                         
                                        1. neviens

                                          neviens Member

                                          Joined:
                                          9 Oct 2013
                                          Messages:
                                          82
                                          Likes Received:
                                          28
                                          Reputations:
                                          3
                                          1. Для каждого события создать массив из 100 элементов.
                                          2. Заполнить массивы событиями- для 5 процентного пять событий, для 30 процентного 30, итд.
                                          3. event = array[rand % 100];