[ 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. ~NeiTRoN~

    ~NeiTRoN~ Elder - Старейшина

    Joined:
    3 Jul 2008
    Messages:
    64
    Likes Received:
    2
    Reputations:
    0
    PNG->MFC

    Народ помогите плиз.
    Есть игруха(MFC). Там ве картинки bmp. Инициализированны:
    Code:
    HBITMAP hBitmap;
    hDC=GetDC(hWnd);
    hvozdDC=CreateCompatibleDC(hDC);
    hBitmap=LoadBitmap(hInstance,MAKEINTRESOURCE(IDB_vozd));
    SelectObject(hvozdDC,hBitmap);
    DeleteObject(hBitmap);
    
    Потом поле строится
    Code:
    BitBlt(hDC,x*weight,y*height,weight,height,hkirpDC,0,0,SRCCOPY);
    Как сделать чобы можно было использовать не только bmp, а png или jpg?
     
  2. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    подключай GDI+, там есть открытие всех основных типов файлов.
     
  3. Kreoda

    Kreoda New Member

    Joined:
    9 Sep 2009
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    PHP:
    #include <stdio.h>

    int main() {
        
        
    printf("Hello!");
        
    void getch();
        
    }

    Почему экран пропадает ? Должен ждать ввода же...
     
  4. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    1) убери void
    2) добавь хидер
    #include <conio.h>
     
    #3784 slesh, 25 Sep 2009
    Last edited: 25 Sep 2009
  5. Kreoda

    Kreoda New Member

    Joined:
    9 Sep 2009
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    Спасибо,а почему void убрать нужно?
     
  6. Fata1ex

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

    Joined:
    12 Dec 2006
    Messages:
    703
    Likes Received:
    300
    Reputations:
    38
    Ты же вызываешь printf() без типа :) Зачем же тип при getch() ? Тип нужно указывать при определении функции, при ее вызове - нет. + Советую добавить в main "return 0;" или изменить int main() на void main().
     
  7. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    а потому что небыло conio и следовательно getch былбы неизвестнйо функций.
    А тут ты её описал как переменную типа void
     
  8. Kreoda

    Kreoda New Member

    Joined:
    9 Sep 2009
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    Когда я хочу объявить void main(),то у меня ошибка вылетает - `main' must return `int'
    Вот я и пишу int main()...в итоге все функции надо чтоли объявлять как интовые...бред какой-то.
     
  9. click

    click Member

    Joined:
    26 Apr 2009
    Messages:
    114
    Likes Received:
    25
    Reputations:
    0
    main должен возварщать код возврата, целое, поэтому и int.
    не забываем return 0; и откопай книгу, там все напсисано, любую.
    И еще не надо путать вызов ф -ции с объявленияем
     
    #3789 click, 25 Sep 2009
    Last edited: 25 Sep 2009
  10. Kreoda

    Kreoda New Member

    Joined:
    9 Sep 2009
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    Я и не путаю - это ошибка компиля.Различие я знаю)
     
  11. click

    click Member

    Joined:
    26 Apr 2009
    Messages:
    114
    Likes Received:
    25
    Reputations:
    0
    Kreoda, где это ты заметил ошибку компилятора? int main() так и должно быть.. или я что-то пропустил?
     
  12. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    вообще всё зависит от версии компилятора и вообще всякой левой хрени.
    Вот в MS VC++ 6.0 можно было описывать
    int main(int argc, char* argv[])
    а можно было писать и void main()
    в всё зависит от функции InitCrt итд итп
     
  13. Hiro Protagonist

    Joined:
    26 Aug 2009
    Messages:
    132
    Likes Received:
    24
    Reputations:
    -2
    гм, кабэ в последней студии все нормально и это отвечает стандарту. Kreoda чтото ты темнишь =\ код и версию студии сюда кидай.
     
    #3793 Hiro Protagonist, 25 Sep 2009
    Last edited: 25 Sep 2009
  14. Gin

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

    Joined:
    11 Sep 2008
    Messages:
    133
    Likes Received:
    7
    Reputations:
    4
    Помогите написать функцию чтения из файла чисел типа double и поместить их в переменные.
    Ниже привожу код, при компиляции выдает херню какую - то прочитанные числа не совпадают с
    тем что написанно в оригинале.

    текстовый файл вида

    10.2 12.5 17.6 15.2
    14.3 52.1 10.7 11.7
    и т.д.

    тип переменной elem

    Code:
    #define razmer 4
    
    struct points
    {
    	double aPoints[razmer];
    };
    
    
    Эта функция читает файл построчно, переменная kolvo следит за тем чтобы строк не было больше

    чем массив.

    Code:
    int cCluster::load_file(char* name){
    cout<<"Test function \n";
    	char line[100],*stroka;
    	FILE *fp;
    	fp=fopen(name,"r");
    	int i=0;
    	
    	while(!feof(fp)){
    		if(i>kolvo)
    			break;
    		stroka=fgets(line,100,fp);
    		printf("Here is read %d line \n here znacheniy \n %s",i,stroka);
    		elem[i]=str2points(stroka);
    		i++;
    	}
    	fclose(fp);
    	return 0;
    }
    
    
    
    Функция str2points(char* line) разбивает строку на числа с помощью ф-ции strtok получает

    числа и приводит их к типу double.

    Code:
    points cCluster::str2points(char* line){
    	char *str;
    	int i=0;
    	points temp;
    	str=strtok(line," ");
    	printf("here is strtok %s\n",str);
    	while(str!=NULL){
    		if(i>razmer)
    			break;
    		
    		temp.aPoints[i]=(double)*str;
    		str=strtok(NULL," ");
    		printf("here is strtok %s\n",str);
    		printf("here is point %d\n",temp.aPoints[i]);
    	}
    	
    	return temp;
    }
    
     
  15. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    а структуру то зачем заводишь? можно просто массив переменных объявить, а то бред получается - излишнее усложнение. или планируется делать класс и добавлять методы?
     
  16. Gin

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

    Joined:
    11 Sep 2008
    Messages:
    133
    Likes Received:
    7
    Reputations:
    4
    2Ra$cal
    Да я написал класс, просто весь выкладывать смысла нет, а вот в этом моменте у меня проблемы.
     
  17. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    temp.aPoints=(double)*str; - негодится
    _gcvt() используй
     
  18. Gin

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

    Joined:
    11 Sep 2008
    Messages:
    133
    Likes Received:
    7
    Reputations:
    4


    Так мне же наоброт нужно из строки в double, gcvt() делает обратный преобразования из double в строку.

    Если я не туда посмотрел, то дай ссылочку на ресурс где ф-ция разобранна.
     
  19. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    подскажу хитрый финт, как пользоваться документацией. вбиваешь "gcvt msdn" в гугле. открываешь страницу. смотришь вниз. видишь

    See Also
    Reference
    Data Conversion
    Floating-Point Support
    atof, _atof_l, _wtof, _wtof_l
    _ecvt
    _fcvt

    методом напряжения извилин понимаешь что нижние функции похожи на эту, но есть atof/wtof что говорит об ascii/wide, т.е. о строках, и f - float. итого получается что мы нашли нужную функцию просто проанализировав док известной нам функции. собсно это и есть основной способ добычи информации.
     
  20. Gin

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

    Joined:
    11 Sep 2008
    Messages:
    133
    Likes Received:
    7
    Reputations:
    4
    2Ra$cal
    Мог бы просто посоветовать ссылку msdn (буду теперь впервую очередь там смотреть) а не указывать ф-цию которая подходит для других случаев и намекать на то что я лентяй.

    В итоге код всеравно не работает, теперь показывает что все 0 помимо ф-ции atof пробовал strtod.
     
Thread Status:
Not open for further replies.