[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Оу..
    Code:
    Необработанное исключение в "0x7c812fd3" в "boost_test.exe": Исключение Microsoft C++: boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::regex_error> > по адресу 0x0012f698
    Upd
    Решил использовать pcre. Пытаюсь распарсить ссылки на статьи с этой страницы http://habrahabr.ru/hub/infosecurity/. Они имеют вид
    Code:
    <a href="http://habrahabr.ru/путь/" class="post_title">White-box cryptography в картинках</a>
    Страничка сохранена в page.html. Но вот код ниже получает почему то всего 1 ссылку.
    Code:
    # include <iostream>
    # include <pcre.h>
    #include <fstream>
    
    #pragma comment(lib, "pcre.lib")
    using namespace std;
    int main(){
    	int i;
    	int fsize;
    
    	FILE* f = fopen("page.html", "r");
    	fseek(f, 0, SEEK_END);
    	fsize = ftell(f);
    	fclose(f);
    
    	char* test = new char[fsize+20];	
    	f = fopen("page.html", "r");
    
    	for(i=0;i<fsize;i++) {
    		fread(&test[i], 1, 1, f);
    	}
    
    	char pattern[] = "(http://habrahabr.ru(.*)/\" class=\"post_title\")";
    
        pcre *re;
        int options = 0;
        const char *error;
        int erroffset;
        re = pcre_compile ((char *) pattern, options, &error, &erroffset, NULL);
     
        if (!re){
           cout << "Failed\n";
        }
        else{
           int count = 0;
           int ovector[30];
     
           count = pcre_exec (re, NULL, (char *) test, strlen(test), 0, NULL, ovector, 30);
    
           if (!count){
              cout << "No match\n";
           }
           else{
              for (int c = 0; c < 2 * count; c += 2){
                 if (ovector[c] < 0){
                    cout << "Bad\n";
                 }
                 else{
    				 for(i = ovector[c]; i <= ovector[c+1];i++) {
    					std::cout << test[i];			 
    				 }
    				 cout << endl;
                 }
              }
           }
        }
        system("pause");
    return 0;
    }
    
     
    #7621 0o Chris o0, 27 Feb 2013
    Last edited: 1 Mar 2013
  2. Lost262013

    Lost262013 New Member

    Joined:
    10 Mar 2013
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    помогите не могу понять чтоне так!!!

    программа должна в отсортированный файл добавлять новую фамилию, не нарушая его упорядоченность. Но выдает ошибки
    c:\documents and settings\admin\мои документы\visual studio 2008\projects\пример 1\пример 1\тип 5\тип 5\тип 5.cpp(20) : error C2660: fopen_s: функция не принимает 2 аргументов
    c:\documents and settings\admin\мои документы\visual studio 2008\projects\пример 1\пример 1\тип 5\тип 5\тип 5.cpp(25) : error C2660: fopen_s: функция не принимает 2 аргументов
    c:\documents and settings\admin\мои документы\visual studio 2008\projects\пример 1\пример 1\тип 5\тип 5\тип 5.cpp(70) : error C2660: fopen_s: функция не принимает 2 аргументов
    c:\documents and settings\admin\мои документы\visual studio 2008\projects\пример 1\пример 1\тип 5\тип 5\тип 5.cpp(78) : error C2562: main: функция типа 'void', возвращающая значение
    c:\documents and settings\admin\мои документы\visual studio 2008\projects\пример 1\пример 1\тип 5\тип 5\тип 5.cpp(14): см. объявление 'main'

    Подскажите в чем ошибся??? Плиз!


    #include "stdafx.h"
    #include <stdio.h>
    #include <iostream>
    #include "math.h"
    #include "clocale"

    using namespace std;

    struct famaly {char s[32]; };

    void main(void)
    {
    famaly s[250], temp;
    bool exit = true;
    short key;
    short j=0;
    FILE *f = fopen_s ( "dbase.txt", "r" );
    if (!f)
    {
    cout << "Файл не найден. Будет создан новый." << endl;
    fclose(f);
    f = fopen_s ( "dbase.txt", "w" );
    if(!f)
    {
    cout << "Ошибка! Невозможно создать файл!" << endl;
    return;
    }
    } else
    {
    while ( !feof(f) ) {fscanf_s (f, "%s", s[j].s); j++;}
    }
    j--;
    fclose(f);
    while ( true )
    {
    cout << "[1] - Вывести содержимое" << endl;
    cout << "[2] - Добавить запись" << endl;
    cout << "[0] - Назад" << endl;
    cout << "-> "; cin >> key;
    switch ( key )
    {
    case 1:
    for (short i = 0; i < j; i++)
    cout << s.s << endl;
    break;
    case 2:
    j++;
    cout << "-> ";
    cin >> s[j].s;
    cout << s[j].s << endl;
    while ( exit )
    {
    exit = false;
    for ( short i = 0; i < j; i++ )
    {
    if(strcmp(s.s, s[i+1].s) > 0)
    {
    temp = s;
    s = s[i+1];
    s[i+1] = temp;
    exit = true;
    }
    }
    }
    break;
    case 0:
    f = fopen_s ( "dbase.txt" , "w" );
    for(int i = 0; i < j; i++)
    fprintf(f, "%s\n", s.s);
    fclose(f);
    return;
    }
    return;
    }
    return 0;
    }
     
  3. mrDebian

    mrDebian Member

    Joined:
    27 Jan 2013
    Messages:
    96
    Likes Received:
    13
    Reputations:
    10
    Тебе же РУССКИМ языком написали где и какие у тебя ошибки.

    fopen_s - принимает 3 параметра. Смотри MSDN.
    return 0; - у тебя функция void, какой 0 тут?
     
  4. Darth Padla

    Darth Padla Member

    Joined:
    21 Jun 2010
    Messages:
    141
    Likes Received:
    25
    Reputations:
    8
    можете называть меня любыми словами,но мне нужно чтобы это заработало.
    кормил разными вавками,упорно говорит то формат не поддерживаетс(727 строка)
    выдает hr = 0x8889000e
    нагуглил что это AUDCLNT_E_EXCLUSIVE_MODE_NOT_ALLOWED

    в shared mode получаю такую ошибку -

    Parameter pFormat is NULL, or ppClosestMatch is NULL and ShareMode is AUDCLNT_SHAREMODE_SHARED.

    мой мозг сломан,там безумное количество интерфейсов(
    код большой

    для меня это очень важно,буду очень рад вашей помощи.
    в конечном итоге мне нужно получить программу,которая при запуске звука выключала бы все остальные звуки. очень долго с этим мучаюсь,получается либо вообще весь звук вырубить через audioendpoint,либо запустить mp3..вместе никак(
    если у вас есть какие-то решения кроме запуска в exclusive mode,буду рад выслушать
     
  5. lBad

    lBad New Member

    Joined:
    20 Jan 2012
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Дан одномерный массив из N элементов. Найти минимальный элемент из положительных элементов этого массива.
     
  6. MTV

    MTV New Member

    Joined:
    16 Feb 2011
    Messages:
    180
    Likes Received:
    2
    Reputations:
    0
    Все же просто!Объявляешь массив из n элементов и ищешь минимальный элемент из положительных.
     
  7. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Code:
    #include <iostream>
    #include <algorithm>
    #include <vector>
    
    int main()
    {
    	int numbers[] = {0, 15, 0, 17, 7, -6, 1, 100500};
    	std::vector<int> array( numbers, numbers + sizeof(numbers ) / sizeof(int) );
    
    	if(array.empty())
    		return 0;
    
    	int min = 0;
    	std::for_each
    	(
    		array.begin(),
    		array.end(),
    		[&min](int i)
    		{
    			if(i > 0 && (i < min || !min))
    				min = i;
    		}
    	);
    
    	if(!min)
    		std::cout << "No minimum found, no positive elements" << std::endl;
    	else
    		std::cout << "Minimum: " << min << std::endl;
    
    	return 0;
    }
    
     
    _________________________
    #7627 Kaimi, 26 Mar 2013
    Last edited by a moderator: 26 Mar 2013
  8. LibertyPaul

    LibertyPaul New Member

    Joined:
    16 Jan 2010
    Messages:
    36
    Likes Received:
    0
    Reputations:
    0
    как это работает?
     
  9. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Хорошо работает. В чем, собственно, вопрос? Обычное лямбда-выражение.
     
    _________________________
  10. cygwin

    cygwin New Member

    Joined:
    21 Mar 2013
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Сап.
    Посоветуйте, что почитать после "Как погроммировать на си++" Дейтелов? С заделом на будущую работу в этой сфере? (сейчас на шарпе для банковского сектора код сопровождаю, хочется плюсов)
    Спасибо
     
  11. cygwin

    cygwin New Member

    Joined:
    21 Mar 2013
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Отвечу сам себе :)
    Думаю, Страуструпа почитать в самый раз)
     
  12. Smapt

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

    Joined:
    29 Jan 2008
    Messages:
    31
    Likes Received:
    32
    Reputations:
    3
    Подскажите "красивый" способ распарсить строку вида char* "ip:port\n" на char*ip, int port. Спасибо.
     
  13. Spot

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

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Красивый... ну тут каждый свое под этим понимает :)
    ТЫЦ собери свою красоту себе сам ;)
     
  14. herfleisch

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

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13
    Само собой - Страуструп. Так же достаточно сильные книги по C++ у Герберта Шилдта. Советую.
     
  15. catrina

    catrina New Member

    Joined:
    11 Apr 2013
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    OpenGL

    помогите пожалуйста как в программе OpenGL Добавить точечный источник света и Превратить точечный источник света в прожектор? Вот листинг программы... Помогите....
    #include <GL/glut.h>
    #include <stdlib.h>
    /* Initialize material property, light source, lighting model,
    * and depth buffer.
    */
    void init(void)
    {
    GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 };
    GLfloat mat_shininess[] = { 50.0 };
    GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 };
    glClearColor (0.0, 0.0, 0.0, 0.0);
    glShadeModel (GL_SMOOTH);
    glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
    glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);
    glLightfv(GL_LIGHT0, GL_POSITION, light_position);
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_COLOR_MATERIAL);
    }
    void display(void)
    {
    glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glColor3f(1.0,0.0,0.0);
    glutSolidSphere (1.0, 20, 16);
    glFlush ();
    }
    void reshape (int w, int h)
    {
    glViewport (0, 0, (GLsizei) w, (GLsizei) h);
    glMatrixMode (GL_PROJECTION);
    glLoadIdentity();
    if (w <= h)
    glOrtho (-1.5, 1.5, -1.5*(GLfloat)h/(GLfloat)w,
    1.5*(GLfloat)h/(GLfloat)w, -10.0, 10.0);
    else
    glOrtho (-1.5*(GLfloat)w/(GLfloat)h,
    1.5*(GLfloat)w/(GLfloat)h, -1.5, 1.5, -10.0, 10.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    }
    void keyboard(unsigned char key, int x, int y)
    {
    switch (key) {
    case 27:
    exit(0);
    break;
    }
    }
    int main(int argc, char** argv)
    {
    glutInit(&argc, argv);
    glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize (500, 500);
    glutInitWindowPosition (100, 100);
    glutCreateWindow (argv[0]);
    init ();
    glutDisplayFunc(display);
    glutReshapeFunc(reshape);
    glutKeyboardFunc(keyboard);
    glutMainLoop();
    return 0;
    }
     
  16. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    http://pmg.org.ru/nehe/ Отличные уроки, все разжевано


    Code:
    #ifndef _OPENGL_INIT_H
    	#define _OPENGL_INIT_H
    
    #pragma comment(lib, "GLU32.lib")
    #pragma comment(lib, "OpenGL32.lib")
    #pragma comment(lib, "GLAUX.lib")
    
    #include <Windows.h>
    #include <stdio.h>
    #include <gl\GL.h>
    #include <gl\GLU.h>
    #include <gl\GLAUX.H>
    
    extern  HGLRC hRC = NULL;																	
    extern  HDC hDC = NULL;																		
    extern  HWND hWnd = NULL;																	
    extern  HINSTANCE hInstance;
    
    
    
    class OpenGL_init {
    
    friend LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
    
    	GLfloat xrot, yrot, zrot;
    	GLfloat xspeed, yspeed;
    	GLfloat trot;
    	GLfloat z;
    
    	GLfloat *lightAmbient;
    	GLfloat *lightDiffuse;
    	GLfloat *lightPosition;
    
    	GLuint filter;
    	GLuint texture[3];
    
    	static bool keys[256];												
    	static bool active;												
    	bool fullscreen;													
    	BOOL light;
    	BOOL lp;
    	BOOL fp;
    	BOOL blend;
    	BOOL bp;
    	
    public :
    	OpenGL_init();
    	AUX_RGBImageRec *LoadBMP(char* filename);
    	static GLvoid ReSizeGLScene(GLint width, GLint height);
    	int LoadGLTexture();
    	int InitGL();
    	int DrawGLScene();	
    	GLvoid KillGLWindow();
    	BOOL CreateGLWindow(LPCSTR title, int width, int height, int bits);
    
    	bool getFullscreen() const;
    	void setFullscreen(bool flag);
    	
    	bool getActive() const;
    	
    	bool getKey(long button) const;
    	void setKey(long button, bool state);
    	
    	BOOL getLP() const;
    	void setLP(BOOL flag);
    	
    	BOOL getFP() const;
    	void setFP(BOOL flag);
    	
    	BOOL getBP() const;	
    	void setBP(BOOL flag);
    	
    	BOOL getBlend() const;
    	void setBlend(BOOL flag);
    	
    	BOOL getLight() const;
    	void setLight(BOOL flag);
    
    	void filterInc();
    
    	void zInc();
    	void zDec();
    
    	void xspeedInc();
    	void xspeedDec();
    
    	void yspeedInc();
    	void yspeedDec();
    	
    
    };
    
    LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
    	switch (uMsg) {
    		case WM_ACTIVATE: {
    			if(!HIWORD(wParam)) {
    				OpenGL_init::active = true;
    			}
    			else {
    				OpenGL_init::active = false;
    			}
    			return 0;
    		}
    
    		case WM_SYSCOMMAND: {
    			switch(wParam) {
    				case SC_SCREENSAVE:
    				case SC_MONITORPOWER:
    					return 0;
    			}
    			break;
    		}
    
    		case WM_CLOSE: {
    			PostQuitMessage(0);
    			return 0;
    		}
    
    		case WM_KEYDOWN: {
    			OpenGL_init::keys[wParam] = true;
    			return 0;
    		}
    
    		case WM_KEYUP: {
    			OpenGL_init::keys[wParam] = false;
    			return 0;
    		}
    
    		case WM_SIZE: {
    			OpenGL_init::ReSizeGLScene(LOWORD(lParam), HIWORD(lParam));
    			return 0;
    		}
    	}
    	
    	return DefWindowProc(hWnd, uMsg, wParam, lParam);
    }
    
    #endif
    
    Ошибки при компиляции:
    Code:
    1>OpenGL_init.obj : error LNK2005: "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) уже определен в main.obj
    1>OpenGL_init.obj : error LNK2005: "struct HGLRC__ * hRC" (?hRC@@3PAUHGLRC__@@A) уже определен в main.obj
    1>OpenGL_init.obj : error LNK2005: "struct HDC__ * hDC" (?hDC@@3PAUHDC__@@A) уже определен в main.obj
    1>OpenGL_init.obj : error LNK2005: "struct HWND__ * hWnd" (?hWnd@@3PAUHWND__@@A) уже определен в main.obj
    1>OpenGL_init.obj : error LNK2001: неразрешенный внешний символ ""struct HINSTANCE__ * hInstance" (?hInstance@@3PAUHINSTANCE__@@A)"
    1>E:\VisualStudio\OpenGL\VSOpenGL\Debug\VSOpenGL.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
    
     
  17. Sifon110

    Sifon110 New Member

    Joined:
    13 Mar 2011
    Messages:
    34
    Likes Received:
    1
    Reputations:
    0
    Code:
    switch (a) {
    
    case 1: {char num [] = "1 1 1 1";}
    case 2: {char num [] = "2 2 2 2";}
    case 3: {char num [] = "3 3 3 3";}
    case 4: {char num [] = "4 4 4 4";}
    }
    
    printf("num = %s",num);
    
    В строке с printf("num = %s",num); говорит что опратор num неопределен. Подскажите пожалуйста как правильно сделать.
     
  18. herfleisch

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

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13
    Проблема в том, что ты объявляешь char num[] внутри {}, то есть она доступна только в пределах {}.

    Правильно сделать так:
    Code:
    char* num;
    	
    	switch (a) {
    		case 1:
    			num = "1 1 1 1";
    			break;
    		case 2:
    			num = "2 2 2 2";
    			break;
    		case 3:
    			num = "3 3 3 3";
    			break;
    		case 4:
    			num = "4 4 4 4";
    			break;
    	}
    
    	printf("num = %s",num);
    
     
  19. waik

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

    Joined:
    2 Nov 2008
    Messages:
    405
    Likes Received:
    163
    Reputations:
    12
    Здравствуйте. Есть три точки на плоскости, нужно проверить, являются ли эти эти точки вершинами прямоугольного треугольника.
     
  20. BlackIce

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

    Joined:
    10 Jan 2013
    Messages:
    100
    Likes Received:
    31
    Reputations:
    27
    Юзай теорему Пифагора
     
Thread Status:
Not open for further replies.