Winpcap Test 03

Programming/C,CPP,CS 2016. 3. 7. 09:11 Posted by TanSanC
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Opening an adapter and capturing the packets


#include "pcap.h"

/* prototype of the packet handler */
void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data);

int main()
{
pcap_if_t *alldevs;
pcap_if_t *d;
int inum;
int i=0;
pcap_t *adhandle;
char errbuf[PCAP_ERRBUF_SIZE];
    
    /* Retrieve the device list on the local machine */
    if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1)
    {
        fprintf(stderr,"Error in pcap_findalldevs: %s\n", errbuf);
        exit(1);
    }
    
    /* Print the list */
    for(d=alldevs; d; d=d->next)
    {
        printf("%d. %s", ++i, d->name);
        if (d->description)
            printf(" (%s)\n", d->description);
        else
            printf(" (No description available)\n");
    }
    
    if(i==0)
    {
        printf("\nNo interfaces found! Make sure WinPcap is installed.\n");
        return -1;
    }
    
    printf("Enter the interface number (1-%d):",i);
    scanf_s("%d", &inum);
    
    if(inum < 1 || inum > i)
    {
        printf("\nInterface number out of range.\n");
        /* Free the device list */
        pcap_freealldevs(alldevs);
        return -1;
    }
    
    /* Jump to the selected adapter */
    for(d=alldevs, i=0; i< inum-1 ;d=d->next, i++);
    
    /* Open the device */
    if ( (adhandle= pcap_open(d->name,          // name of the device
                              65536,            // portion of the packet to capture
                                                // 65536 guarantees that the whole packet will be captured on all the link layers
                              PCAP_OPENFLAG_PROMISCUOUS,    // promiscuous mode
                              1000,             // read timeout
                              NULL,             // authentication on the remote machine
                              errbuf            // error buffer
                              ) ) == NULL)
    {
        fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n", d->name);
        /* Free the device list */
        pcap_freealldevs(alldevs);
        return -1;
    }
    
    printf("\nlistening on %s...\n", d->description);
    
    /* At this point, we don't need any more the device list. Free it */
    pcap_freealldevs(alldevs);
    
    /* start the capture */
    pcap_loop(adhandle, 0, packet_handler, NULL);
    
    return 0;
}


/* Callback function invoked by libpcap for every incoming packet */
void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data)
{
    struct tm ltime;
    char timestr[16];
    time_t local_tv_sec;

    /*
     * unused variables
     */
    (VOID)(param);
    (VOID)(pkt_data);

    /* convert the timestamp to readable format */
    local_tv_sec = header->ts.tv_sec;
    localtime_s(&ltime, &local_tv_sec);
    strftime( timestr, sizeof timestr, "%H:%M:%S", &ltime);
    
    printf("%s,%.6d len:%d\n", timestr, header->ts.tv_usec, header->len);
    
}




'Programming > C,CPP,CS' 카테고리의 다른 글

Winpcap Test 05  (0) 2016.03.07
Winpcap Test 04  (0) 2016.03.07
Winpcap Test 02  (0) 2016.03.07
Winpcap Test 01  (0) 2016.03.07
CPP 2015-01-15 수업내용 정리  (0) 2015.01.15

Winpcap Test 02

Programming/C,CPP,CS 2016. 3. 7. 09:08 Posted by TanSanC
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Obtaining advanced information about installed devices



 



/* * Copyright (c) 1999 - 2005 NetGroup, Politecnico di Torino (Italy) * Copyright (c) 2005 - 2006 CACE Technologies, Davis (California) * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the Politecnico di Torino, CACE Technologies * nor the names of its contributors may be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #include <stdio.h> #include "pcap.h" #ifndef WIN32 #include <sys/socket.h> #include <netinet/in.h> #else #include <winsock.h> #endif // Function prototypes void ifprint(pcap_if_t *d); char *iptos(u_long in); char* ip6tos(struct sockaddr *sockaddr, char *address, int addrlen); int main() { pcap_if_t *alldevs; pcap_if_t *d; char errbuf[PCAP_ERRBUF_SIZE+1]; char source[PCAP_ERRBUF_SIZE+1]; printf("Enter the device you want to list:\n" "rpcap:// ==> lists interfaces in the local machine\n" "rpcap://hostname:port ==> lists interfaces in a remote machine\n" " (rpcapd daemon must be up and running\n" " and it must accept 'null' authentication)\n" "file://foldername ==> lists all pcap files in the give folder\n\n" "Enter your choice: "); fgets(source, PCAP_ERRBUF_SIZE, stdin); source[PCAP_ERRBUF_SIZE] = '\0'; /* Retrieve the interfaces list */ if (pcap_findalldevs_ex(source, NULL, &alldevs, errbuf) == -1) { fprintf(stderr,"Error in pcap_findalldevs: %s\n",errbuf); exit(1); } /* Scan the list printing every entry */ for(d=alldevs;d;d=d->next) { ifprint(d); } pcap_freealldevs(alldevs); return 1; } /* Print all the available information on the given interface */ void ifprint(pcap_if_t *d) { pcap_addr_t *a; char ip6str[128]; /* Name */ printf("%s\n",d->name); /* Description */ if (d->description) printf("\tDescription: %s\n",d->description); /* Loopback Address*/ printf("\tLoopback: %s\n",(d->flags & PCAP_IF_LOOPBACK)?"yes":"no"); /* IP addresses */ for(a=d->addresses;a;a=a->next) { printf("\tAddress Family: #%d\n",a->addr->sa_family); switch(a->addr->sa_family) { case AF_INET: printf("\tAddress Family Name: AF_INET\n"); if (a->addr) printf("\tAddress: %s\n",iptos(((struct sockaddr_in *)a->addr)->sin_addr.s_addr)); if (a->netmask) printf("\tNetmask: %s\n",iptos(((struct sockaddr_in *)a->netmask)->sin_addr.s_addr)); if (a->broadaddr) printf("\tBroadcast Address: %s\n",iptos(((struct sockaddr_in *)a->broadaddr)->sin_addr.s_addr)); if (a->dstaddr) printf("\tDestination Address: %s\n",iptos(((struct sockaddr_in *)a->dstaddr)->sin_addr.s_addr)); break; case AF_INET6: printf("\tAddress Family Name: AF_INET6\n"); if (a->addr) printf("\tAddress: %s\n", ip6tos(a->addr, ip6str, sizeof(ip6str))); break; default: printf("\tAddress Family Name: Unknown\n"); break; } } printf("\n"); } /* From tcptraceroute, convert a numeric IP address to a string */ #define IPTOSBUFFERS 12 char *iptos(u_long in) { static char output[IPTOSBUFFERS][3*4+3+1]; static short which; u_char *p; p = (u_char *)&in; which = (which + 1 == IPTOSBUFFERS ? 0 : which + 1); _snprintf_s(output[which], sizeof(output[which]), sizeof(output[which]),"%d.%d.%d.%d", p[0], p[1], p[2], p[3]); return output[which]; } char* ip6tos(struct sockaddr *sockaddr, char *address, int addrlen) { socklen_t sockaddrlen; #ifdef WIN32 sockaddrlen = sizeof(struct sockaddr_in6); #else sockaddrlen = sizeof(struct sockaddr_storage); #endif if(getnameinfo(sockaddr, sockaddrlen, address, addrlen, NULL, 0, NI_NUMERICHOST) != 0) address = NULL; return address; }






error LNK2019: __imp__getnameinfo@28 외부 기호(참조 위치: _ip6tos 함수)에서 확인하지 못했습니다.


Re: About error LNK2001: unresolved external symbol in a winsock application

You need corresponding Ws2_32.lib file to be added to your project to link with.
Header file contains only function declareations.



이런 에러가 뜬다.



링커 input 에 Ws2_32.lib 를 추가



'Programming > C,CPP,CS' 카테고리의 다른 글

Winpcap Test 04  (0) 2016.03.07
Winpcap Test 03  (0) 2016.03.07
Winpcap Test 01  (0) 2016.03.07
CPP 2015-01-15 수업내용 정리  (0) 2015.01.15
C 2015-01-09 실습  (0) 2015.01.09

Winpcap Test 01

Programming/C,CPP,CS 2016. 3. 7. 08:50 Posted by TanSanC
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Winpcap Test 01



Download WinPcap 4.1.2 Developer's Pack

http://www.winpcap.org/devel.htm



C/C++ -> Genenral -> Additional Include Directories : WpdPack/WpdPack/Include


Linker -> General -> Additional Library Directories : WpdPack/WpdPack/Lib


Linker -> Input -> Addtional Dependencies : wpcap.lib Packet.lib


C/C++ -> Preprocessor -> PreProcessor Definitions : HAVE_REMOTE


sample Code

/* Copyright (c) 1999 - 2005 NetGroup, Politecnico di Torino (Italy)

 * Copyright (c) 2005 - 2006 CACE Technologies, Davis (California)

 * All rights reserved.

 *

 * Redistribution and use in source and binary forms, with or without

 * modification, are permitted provided that the following conditions

 * are met:

 *

 * 1. Redistributions of source code must retain the above copyright

 * notice, this list of conditions and the following disclaimer.

 * 2. Redistributions in binary form must reproduce the above copyright

 * notice, this list of conditions and the following disclaimer in the

 * documentation and/or other materials provided with the distribution.

 * 3. Neither the name of the Politecnico di Torino, CACE Technologies 

 * nor the names of its contributors may be used to endorse or promote 

 * products derived from this software without specific prior written 

 * permission.

 *

 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS

 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT

 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR

 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT

 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,

 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT

 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY

 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT

 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE

 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

 *

 */



#include <stdlib.h>

#include <stdio.h>


//

// NOTE: remember to include WPCAP and HAVE_REMOTE among your

// preprocessor definitions.

//


#include <pcap.h>


#define LINE_LEN 16


int main(int argc, char **argv)

{   

pcap_if_t *alldevs, *d;

pcap_t *fp;

u_int inum, i=0;

char errbuf[PCAP_ERRBUF_SIZE];

int res;

struct pcap_pkthdr *header;

const u_char *pkt_data;


    printf("pktdump_ex: prints the packets of the network using WinPcap.\n");

    printf("   Usage: pktdump_ex [-s source]\n\n"

           "   Examples:\n"

           "      pktdump_ex -s file://c:/temp/file.acp\n"

           "      pktdump_ex -s rpcap://\\Device\\NPF_{C8736017-F3C3-4373-94AC-9A34B7DAD998}\n\n");


    if(argc < 3)

    {


        printf("\nNo adapter selected: printing the device list:\n");

        /* The user didn't provide a packet source: Retrieve the local device list */

        if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1)

        {

            fprintf(stderr,"Error in pcap_findalldevs_ex: %s\n", errbuf);

            return -1;

        }

        

        /* Print the list */

        for(d=alldevs; d; d=d->next)

        {

            printf("%d. %s\n    ", ++i, d->name);


            if (d->description)

                printf(" (%s)\n", d->description);

            else

                printf(" (No description available)\n");

        }

        

        if (i==0)

        {

            fprintf(stderr,"No interfaces found! Exiting.\n");

            return -1;

        }

        

        printf("Enter the interface number (1-%d):",i);

        scanf_s("%d", &inum);

        

        if (inum < 1 || inum > i)

        {

            printf("\nInterface number out of range.\n");


            /* Free the device list */

            pcap_freealldevs(alldevs);

            return -1;

        }

        

        /* Jump to the selected adapter */

        for (d=alldevs, i=0; i< inum-1 ;d=d->next, i++);

        

        /* Open the device */

        if ( (fp= pcap_open(d->name,

                            100 /*snaplen*/,

                            PCAP_OPENFLAG_PROMISCUOUS /*flags*/,

                            20 /*read timeout*/,

                            NULL /* remote authentication */,

                            errbuf)

                            ) == NULL)

        {

            fprintf(stderr,"\nError opening adapter\n");

            return -1;

        }

    }

    else 

    {

        // Do not check for the switch type ('-s')

        if ( (fp= pcap_open(argv[2],

                            100 /*snaplen*/,

                            PCAP_OPENFLAG_PROMISCUOUS /*flags*/,

                            20 /*read timeout*/,

                            NULL /* remote authentication */,

                            errbuf)

                            ) == NULL)

        {

            fprintf(stderr,"\nError opening source: %s\n", errbuf);

            return -1;

        }

    }


    /* Read the packets */

    while((res = pcap_next_ex( fp, &header, &pkt_data)) >= 0)

    {


        if(res == 0)

            /* Timeout elapsed */

            continue;


        /* print pkt timestamp and pkt len */

        printf("%ld:%ld (%ld)\n", header->ts.tv_sec, header->ts.tv_usec, header->len);          

        

        /* Print the packet */

        for (i=1; (i < header->caplen + 1 ) ; i++)

        {

            printf("%.2x ", pkt_data[i-1]);

            if ( (i % LINE_LEN) == 0) printf("\n");

        }

        

        printf("\n\n");     

    }


    if(res == -1)

    {

        fprintf(stderr, "Error reading the packets: %s\n", pcap_geterr(fp));

        return -1;

    }


    return 0;

}


'Programming > C,CPP,CS' 카테고리의 다른 글

Winpcap Test 03  (0) 2016.03.07
Winpcap Test 02  (0) 2016.03.07
CPP 2015-01-15 수업내용 정리  (0) 2015.01.15
C 2015-01-09 실습  (0) 2015.01.09
Run-Time Check Failure #3 - The variable 'a' is being used without being initialized.  (0) 2014.05.14

CPP 2015-01-15 수업내용 정리

Programming/C,CPP,CS 2015. 1. 15. 15:43 Posted by TanSanC
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


   객체 : 의미있는 값을 갖고있고, 다른 값을 바꿀수 있는 함수를 갖고 있고, 실제로 존재하는 것


   클래스 : 어떤 값들의 타입을 분류하여 멤버 변수로 만들어 놓고, 다른 값을 바꿀수 있는 함수를 갖고 있다.

 실제로 존재하지 않는다. 분류


   추상화 : 객체의 특징을 찾아내어, 클래스로 작성하는 일


   캡슐화 : 객체의 멤버 변수, 멤버 함수를 접근지정자를 통하여 접근제어하는 것


   생성자 함수 : 객체가 생성될때 객체의 멤버 변수값을 채워 넣기 위한 함수


   생성자 함수 오버로딩 : 생성자 함수가 다양한 매개변수 형태에 적용되기 위한 기술


   소멸자 함수 : 객체가 소멸 될때 호출되는 함수









student.h




#include <iostream>

using namespace std;

 

class Student

{

private:

   int studentNumber;

   char name[30];

   string parentAddress;

   string studentAddress;

   char major[30];

   char phoneNumber[30];

   double averagePoint; // 전체평점

public:

   Student(); // 오버로딩1-1

   Student(int studentNumber, char* name); // 오버로딩1-2 

   Student(Student& s); // 오버로딩1-3

   ~Student();

 

   void setStudentNumber(int studentNumber);

   int getStudentNumber();

   void setName();

   int getName();

  

   // 학생전체조회

   // 나의정보조회

   // 학적변동

  

};

 





student.cpp




#include "student.h"

Student::Student() // 오버로딩1-1

   studentNumber = 1500000;

   strcpy(name, "");

   parentAddress = "";

   studentAddress = "";

   strcpy(major, ""); // 의미: major = "";

   strcpy(phoneNumber, "");

   averagePoint = 0.0;

}

Student::Student(int studentNumber, char* name) // 오버로딩1-2

:parentAddress(""),studentAddress("")

{

   this->studentNumber = studentNumber;

   strcpy(Student::name, name);

   strcpy(major, ""); // 의미: major = "";

   strcpy(phoneNumber, "");  

   averagePoint = 0.0;

}

Student::Student(Student& s)

{

   studentNumber = s.studentNumber;

   strcpy(name, s.name);

   parentAddress = s.parentAddress;

   studentAddress = s.studentAddress;

   strcpy(major, s.major);

   strcpy(phoneNumber, s.phoneNumber);

   averagePoint = s.averagePoint;

}

 

Student::~Student()

{

 

}

void Student::setStudentNumber(int studentNumber)

{

   this->studentNumber = studentNumber;

}

int Student::getStudentNumber()

{

   return studentNumber;

}




main.cpp





#include "student.h"

 

int main()

{

 

   // 학생정보관리프로그램

   Student s1(12345,"홍길동"); // 학생1

 

   cout << s1.studentNumber << endl;

 

   return 0;

}

 

 

'Programming > C,CPP,CS' 카테고리의 다른 글

Winpcap Test 02  (0) 2016.03.07
Winpcap Test 01  (0) 2016.03.07
C 2015-01-09 실습  (0) 2015.01.09
Run-Time Check Failure #3 - The variable 'a' is being used without being initialized.  (0) 2014.05.14
C 언어 방향키 입력활용  (0) 2014.05.03

C 2015-01-09 실습

Programming/C,CPP,CS 2015. 1. 9. 15:43 Posted by TanSanC
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

#include<stdio.h>

#include<stdlib.h>

 

struct bookData

{

   char name[30];

   char state[30];

   int price;

};

int main(void)

{

   struct bookData* mBookData;

   int count = 0;

   int mode;

   int i;

 

   mBookData = (struct bookData*)malloc( sizeof(struct bookData) );

 

   while(1)

   {

       printf("메뉴를선택하세요( 1. 추가, 2. 조회)\n");

       scanf("%d",&mode);

       switch(mode)

       {

       case 1:

          count++;

 

          mBookData = (struct bookData*)realloc( mBookData, sizeof(struct bookData) * count);

 

          fflush(stdin);

          gets(mBookData[count-1].name);

          fflush(stdin);

          gets(mBookData[count-1].state);

          fflush(stdin);

          scanf("%d", &mBookData[count-1].price);

          fflush(stdin);

 

 

          break;

       case 2:

          printf("%20s %10s %10s\n", "제목", "대여상태", "가격");

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

          {

             printf("%20s %10s %10d\n", mBookData[i].name, mBookData[i].state, mBookData[i].price);

          }

          break;

       }

   }

 

    return 0;

}

 

 

 

'Programming > C,CPP,CS' 카테고리의 다른 글

Winpcap Test 01  (0) 2016.03.07
CPP 2015-01-15 수업내용 정리  (0) 2015.01.15
Run-Time Check Failure #3 - The variable 'a' is being used without being initialized.  (0) 2014.05.14
C 언어 방향키 입력활용  (0) 2014.05.03
cpp  (0) 2014.05.03
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

#include <stdio.h>

 

int main(void)

{

        int a;

        printf("%d", a);

        return 0;

}

 




Run-Time Check Failure #3 - The variable 'a' is being used without being initialized.


이 에러는 a 라는 변수가 초기화 없이 사용되었다고 나는 에러로


a 라는 변수에는 아무 값도 저장 되지 않은 상태이므로


a 라는 변수를 연산에 사용하거나 출력하면 a 라는 값이 무슨 값일지 모르니까 문제가 된다.

( 출력 내용을 예상 할 수 있겠는가? )


a 에 어떤 값은 저장시킨 다음 사용하면 문제가 없다.



'Programming > C,CPP,CS' 카테고리의 다른 글

CPP 2015-01-15 수업내용 정리  (0) 2015.01.15
C 2015-01-09 실습  (0) 2015.01.09
C 언어 방향키 입력활용  (0) 2014.05.03
cpp  (0) 2014.05.03
C 정렬함수 인자 주소값, 사이즈  (0) 2014.04.12

C 언어 방향키 입력활용

Programming/C,CPP,CS 2014. 5. 3. 12:20 Posted by TanSanC
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

#include <stdio.h>

#include <conio.h>

#include <windows.h>

#include <stdlib.h>

#include <time.h>

 

void gotoxy(int x, int y){

    COORD Pos = {x-1, y-1};

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Pos);

}

 

void main(){

 

    int x=1;

    int y=1;

 

    int chr;

 

    while(1){

        chr = getch();

        if(chr == 0 || chr == 0xe0){

            chr = getch();

            if(chr == 72){ //

                y--;

                if(y<1)y =1;

            }else if(chr == 80){ //

                y++;

            }else if(chr == 75){ //

                x--;

                if(x<1)x=1;

            }else if(chr == 77){ //

                x++;

            }

            system("cls");

            gotoxy(x,y);

            printf("*");

        }

 

    }

}


출처 : http://peulblog.tistory.com/5


 

cpp

Programming/C,CPP,CS 2014. 5. 3. 10:18 Posted by TanSanC
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

#include <iostream>

#include <string>

using namespace std;

class 에어컨

{

public:

    virtual void powerOn()  {

        cout << "에어컨이켜집니다." << endl;

    }

};

class 냉난방기: public 에어컨

{

public:

    void powerOn()  {

        cout << "냉난방기가켜집니다." << endl;

    }

};

void TestFunc(에어컨* tf)

{

    (*tf).powerOn();

}

int main()

{

    에어컨a;

    TestFunc(&a);

 

    냉난방기b;

    TestFunc(&b);

    return 0;

}

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

#include <stdio.h>

void printArr(int *x, int size);

void sortArr(int *x, int size);

int main( )

{

    int arr[10] = { 1503, 2420, 11350, 3110, 20

        ,153, 220, 350, 34110, 2011 };

    printArr(arr, 10);

    sortArr(arr, 10);

    printArr(arr, 10);

    return 0;

}

void printArr(int *x, int size)

{

    int i;

    printf("printArr==\n");

    for( i = 0 ; i < size ; i++ )

    {

        printf("%d\n", x[i]);

    }

}  

 

void sortArr(int *x, int size)

{

    int temp, i, j;

 

    for( i = 0 ; i < size ; i++ )

    {

        for( j = i+1 ; j < size ; j++ )

        {

            if( x[i] < x[j] )

            {

                temp = x[i];

                x[i] = x[j];

                x[j] = temp;

            }

        }

    }

}

 

'Programming > C,CPP,CS' 카테고리의 다른 글

C 언어 방향키 입력활용  (0) 2014.05.03
cpp  (0) 2014.05.03
C 선택, 버블 정렬 함수  (0) 2014.04.12
C 언어 반복문 실습 과제  (0) 2014.03.22
CPP 객체지향 핵심이롬  (0) 2014.03.09

C 선택, 버블 정렬 함수

Programming/C,CPP,CS 2014. 4. 12. 15:53 Posted by TanSanC
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

선택 정렬 ========

void sortArr(int *x)

{

    int smaller;

    int smallIndex;

    int temp, i, j;

 

    for( j = 0 ; j < 5 - 1 ; j++ )

    {

        smaller = x[j];

        smallIndex = j;

        for( i = j+1; i < 5 ; i++)

        {

            if ( smaller > x[i] )

            {

                smaller = x[i];     smallIndex = i;

            }

        }

        temp = x[j];

        x[j] = x[smallIndex];

        x[smallIndex] = temp;

    }

}

버블 정렬 ===============

 

void sortArr(int *x)

{

    int i, temp, j;

    for(j = 1; j < 5 ; j++)

    {

        for( i = 0 ; i < 5-j ; i++ )

        {

            if ( x[i] > x[i+1] )

            {

                temp = x[i];

                x[i] = x[i+1];

                x[i+1] = temp;

            }

        }

    }

}

'Programming > C,CPP,CS' 카테고리의 다른 글

cpp  (0) 2014.05.03
C 정렬함수 인자 주소값, 사이즈  (0) 2014.04.12
C 언어 반복문 실습 과제  (0) 2014.03.22
CPP 객체지향 핵심이롬  (0) 2014.03.09
아두이노와 연계한 CPP 시리얼 통신 응용  (0) 2014.03.08