ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JUNGOL 기초다지기 17 포인터
    보관함 2020. 1. 9. 20:52

    프로그래밍에서 가장 기초적인 내용을 다루는 기초 다지기입니다.

    이번 포스팅은 기초 다지기 중 열일곱 번째인 포인터 문제를 풀어보도록 하겠습니다.

     

    기초 내용인 만큼 다른 설명없이 문제와 코드만 간단하게 작성하도록 하겠습니다.


    619 : 포인터- 자가진단1

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    	int n;
    
    	cin >> n;
    
    	cout << &n << ' ' << n << endl;
    }

     

    620 : 포인터- 자가진단2

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    	int *n = new int;
    
    	cin >> *n;
    
    	cout << (*n) / 10 << "..." << (*n) % 10 << endl;
    
    	delete n;
    }

     

    621 : 포인터- 자가진단3

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    	int* a = new int;
    	int* b = new int;
    
    	cin >> *a >> *b;
    
    	int aVal = *a;
    	int bVal = *b;
    
    	cout << aVal << " + " << bVal << " = " << aVal + bVal << endl;
    	cout << aVal << " - " << bVal << " = " << aVal - bVal << endl;
    	cout << aVal << " * " << bVal << " = " << aVal * bVal << endl;
    	cout << aVal << " / " << bVal << " = " << aVal / bVal << endl;
    
    	delete a;
    	delete b;
    }

     

    622 : 포인터- 자가진단4

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    	int arr[5];
    
    	for (int i = 0; i < 5; ++i)
    	{
    		cin >> *(arr + i);
    	}
    
    	for (int i = 0; i < 5; i += 2)
    	{
    		cout << *(arr + i) << ' ';
    	}
    	cout << endl;
    }

     

    623 : 포인터- 자가진단5

     

    이 문제는 정확도 때문에 정답이 달라지는 문제가 있습니다. float 대신에 double 사용하셔야 합니다.

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        double arr[5];
    
        for (int i = 0; i < 5; ++i)
        {
            cin >> *(arr + i);
        }
    
        cout.setf(ios::fixed);
        cout.precision(1);
    
        for (int i = 0; i < 5; ++i)
        {
            cout << *(arr + i) << ' ';
        }
        cout << endl;
    }

     

    624 : 포인터- 자가진단6

     

    이 문제도 마찬가지로 double을 사용하셔야 합니다.

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int n;
    
        cin >> n;
    
        double* arr = new double[n];
    
        for (int i = 0; i < n; ++i)
        {
            cin >> arr[i];
        }
    
        cout.setf(ios::fixed);
        cout.precision(2);
    
        double hap = 0;
        double avg = 0;
        for (int i = 0; i < n; ++i)
        {
            cout << arr[i] << ' ';
            hap += arr[i];
        }
        cout << endl;
    
        avg = hap / n;
    
        cout << "hap : " << hap << endl;
        cout << "avg : " << avg << endl;
    
        delete[] arr;
    }

     

    625 : 포인터- 자가진단7

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    	int n;
    
    	cin >> n;
    
    	int* arr = new int[n];
    
    	for (int i = 0; i < n; ++i)
    	{
    		cin >> arr[i];
    	}
    
    	for (int i = 0; i < n; ++i)
    	{
    		for (int j = 0; j < n - i - 1; ++j)
    		{
    			if (arr[j] < arr[j + 1])
    				swap(arr[j], arr[j + 1]);
    		}
    	}
    
    	for (int i = 0; i < n; ++i)
    	{
    		cout << arr[i] << ' ';
    	}
    	cout << endl;
    
    	delete[] arr;
    }

     

    200 : 포인터- 형성평가1

     

    현재 이 문제는 문제는 바뀌었는데 체점이 과거 문제 기준으로 되고 있어서 풀 수 없습니다. 이전 문제에 대한 답은 다음과 같습니다.

    #pragma warning (disable:4996)
     
    #include <iostream>
    #include <string.h>
    #include <cmath>
     
    using namespace std;
     
    int cmp(char str1[], char str2[]) {
        int counter, len1, len2;
        len1 = strlen(str1);
        len2 = strlen(str2);
        counter = len1 > len2 ? len1 : len2;
     
        if (('a' <= str1[0] && str1[0] <= 'z' || 'A' <= str1[0] && str1[0] <= 'Z') &&
            (str2[0] > 'Z' && 'a' > str2[0] || str2[0] > 'z' || 'A' > str2[0]))
            return -1;
        else if (('a' <= str2[0] && str2[0] <= 'z' || 'A' <= str2[0] && str2[0] <= 'Z') &&
            (str1[0] > 'Z' && 'a' > str1[0] || str1[0] > 'z' || 'A' > str1[0]))
            return 1;
     
        for (int i = 0; i < counter; i++) {
            if (str1[i] < str2[i]) {
                return -1;
            }
            else if (str1[i] > str2[i]) {
                return 1;
            }   }
        if (len1 < counter)
            return -1;
        else if (len2 < counter)
            return 1;
        else
            return 0;
    }
     
    void cpy(char dst[], char src[]){
        int i;
        for (i = 0; i < strlen(src); i++)
            dst[i] = src[i];
        dst[i] = '\0';
    }
     
    int main(void) {
        char a;
        double b;
     
        printf("%#p %#p\n", &a, &b);
     
        return 0;
    }

     

    201 : 포인터- 형성평가2

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    	int *n = new int;
    
    	cin >> *n;
    
    	for (int i = 0; i < *n; ++i)
    		cout << '*';
    	cout << endl;
    
    	delete n;
    }

     

    202 : 포인터 - 형성평가3

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    	int* a{ new int }, *b{ new int }, *c{ new int };
    
    	cin >> *a >> *b;
    	
    	*c = *a - *b;
    
    	cout << abs(*c) << endl;
    
    	delete a;
    	delete b;
    	delete c;
    }

     

    203 : 포인터 - 형성평가4

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    	int* arr{ new int[10] };
    
    	for (int i = 0; i < 10; ++i)
    	{
    		cin >> arr[i];
    	}
    
    	int evenCount{ 0 };
    	int oddCount{ 0 };
    	for (int i = 0; i < 10; ++i)
    	{
    		if (arr[i] % 2 == 0)
    			evenCount++;
    		else
    			oddCount++;
    	}
    
    	cout << "odd : " << oddCount << endl;
    	cout << "even : " << evenCount << endl;
    
    	delete[] arr;
    }

     

    204 : 포인터 - 형성평가5

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    	int n;
    
    	cin >> n;
    
    	int* arr{ new int[n] };
    
    	for (int i = 0; i < n; ++i)
    	{
    		cin >> arr[i];
    	}
    
    	int max = 0;
    	int min = 999;
    	for (int i = 0; i < n; ++i)
    	{
    		if (max < arr[i])
    			max = arr[i];
    		if (min > arr[i])
    			min = arr[i];
    	}
    
    	cout << "max : " << max << endl;
    	cout << "min : " << min << endl;
    
    	delete[] arr;
    }

     

    http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&sca=10h0

     

    JUNGOL | 문제은행 1 페이지

    경기도 안양시 동안구 평촌대로 109 협성골드프라자 601호 TEL : 031-360-4144 FAX : 031-388-0996 E-mail : hancomc@hotmail.com, comkiwer@naver.com Copyrightⓒ 2010-2019 jungol. All right reserved. TOP

    www.jungol.co.kr

    댓글

Designed by Tistory.