《 프로 그래 밍 주옥 》 읽 기 소기 (3) - 데이터 가 데이터 구 조 를 결정 한다.
이 장 은 복잡 한 if 판단 프로그램 단락 으로 주 제 를 제시 하 는데 이런 코드 의 여분 이 많 고 유사 성 이 높 은 프로그램 구 조 는 적당 한 데이터 구조 (예 를 들 어 수조) 로 같은 목적 을 달성 하 는 것 을 고려 해 야 한다.따라서 본 장의 제목 의 완전한 의 미 를 끌 어 낸다. 적절 한 데이터 보 기 는 실제 적 으로 프로그램의 구 조 를 결정 한다.
구조 화 데이터
이 장 은 복잡 한 프로그램의 복잡 한 코드 양 이 이성 에 맞지 않 는 다 는 것 을 대량으로 소개 하여 독자 들 이 깊이 이해 하고 기억 할 수 있 게 하고 나중에 프로그램 을 쓸 때 유사 한 코드 를 다시 쓰 는 것 을 피 할 수 있다.저 자 는 네 번 째 소절 에서 구조 화 된 데이터 의 개념 을 제시 했다.구조 화 된 데 이 터 는 구조 가 뚜렷 한 데 이 터 를 말한다. 초기 에 적당 한 변수 이름 만 선택 했다 고 할 수 있 었 지만 후기 에 프로 그래 밍 언어 는 기록 이나 구조 와 그들 을 가리 키 는 지침 을 넣 었 다.데 이 터 를 처리 하 는 코드 대신 insert 와 search 라 는 함 수 를 사용 하 는 것 을 배 웠 습 니 다. 이 는 데이터 표현 방식 을 바 꿀 때 프로그램의 다른 부분 을 손상 시 키 지 않 는 데 도움 이 됩 니 다.요약 하면 시스템 처리 대기 데 이 터 를 연구 하면 우수한 모듈 화 구 조 를 깊이 인식 할 수 있다.특수 데 이 터 를 처리 하 는 강력 한 도구 가 많 습 니 다.
이 장 은 주로 독자 에 게 구조 화 된 데이터 사상 을 주입 시 키 고 작은 이야기 의 형식 으로 독자 에 게 '작은 프로그램 으로 이 루어 질 수 있 는 것 은 큰 프로그램 을 만 들 지 말 라' 고 알려 준다.데이터 구조 디자인 은 시간 과 공간 을 절약 하고 이식 성과 유지 가능성 을 향상 시 키 는 등 긍정 적 인 영향 도 많다.다음은 특수 데이터 처리 에 관 한 몇 가지 원칙 입 니 다.
전체적으로 말 하면 본 장 은 복잡 한 코드 대신 적절 한 데이터 구 조 를 사용 하여 데이터 에서 프로그램 구 조 를 얻 는 것 을 알려 주 는 것 이다.인 코딩 을 시작 하기 전에 우수한 프로그래머 는 입 출력 과 중간 데이터 구 조 를 철저히 이해 할 것 이다.
문제 풀이
1. 상기 지식 을 배 워 서 이 문제 에 직면 하면 우 리 는 배열 이 해당 하 는 데 이 터 를 저장 하 는 방식 을 쉽게 생각 할 수 있다.이 문제 에서 세 개의 저장 배열 이 필요 하 다. 기본 세금, 등급 차기 와 세율 은 이런 방식 으로 복잡 한 조건 판단 을 피하 고 코드 량 을 줄 일 수 있다.2. k 단계 상 계수 선형 재 귀 정의 급수, 똑 같이 두 개의 배열 을 사용 하고 하나의 저장 매개 변수 c [1] 부터 c [k + 1] 까지 다른 저장 결과 a [1] 부터 a [n] 까지 코드 가 간결 하고 건장 성 이 좋다.구체 적 인 실현 은 다음 과 같다.
/************************************************************************/
/* 《 》 * 3.7 2, k * , , , */
/************************************************************************/
#include <iostream>
#include <cstdlib>
using namespace std;
const int N = 100;
int main()
{
// k,m
int k, m;
int c[N + 1] = { 0 }, a[N] = {0};
cin >> k >> m;
// c[1] c[k+1] k+1 , , 1
for (int i = 1; i <= k + 1; i++)
cin >> c[i];
for (int j = 1; j <= k; j++)
a[j] = c[j - 1] * a[j - 1] + c[j];
for (int j = 1; j <= k; j++)
cout << "a[" << j << "] = " << a[j] << "\t";
cout << endl << "a[" << m << "] = " << a[m] << endl;
system("pause");
return 0;
}
3. 대문자 로 인쇄 하고 책 부록 의 답 을 제시 합 니 다.4. 다음 날짜 문 제 를 처리 하 는 함 수 를 작성 합 니 다. (1) 두 날 짜 를 정 하고 둘 사이 의 일 수 를 계산 합 니 다.(2) 날 짜 를 정 하고 반환 값 은 주 몇 입 니까?(3) 주어진 달 과 년, 문자 배열 로 이 달의 달력 을 생 성 합 니 다.
5. 영어 의 일부분 연결 문 제 를 처리 합 니 다.
6. 이 문 제 는 출력 템 플 릿 을 포맷 하여 데이터베이스 에 있 는 기록 이 맞 춤 형 문 서 를 만 들 도록 해 야 합 니 다. 책 에 있 는 인 스 턴 스 와 비슷 합 니 다.실제 응용 에서 스 크 립 트 언어 로 구현 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.