오늘 했던 일과 느낀 점을 매일 간단하게 정리 하려고 한다.
전체 글
- TIL 2021.01.06
- mystricmp 2020.01.23
- mystrcpy 2020.01.23
- 구조체 데이터 처리 2020.01.23
- 배열 데이터에 대한 평균, 분산, 표준편차 구하기 2019.07.11
- GCD 함수 2019.07.11
- 프로젝트 만들기 2019.05.10
- 퀵 정렬 2019.05.02
TIL
mystricmp
#include
#include
#include
int mystricmp(const char *s1, const char *s2)
{
int i;
char a, b;
for(i=0; s1[i] != '\0' && s2[i] != '\0'; i++)
{
a = tolower(s1[i]);
b = tolower(s2[i]);
if(a > b)
return 1;
else if(a < b)
return -1;
}
if(s1[i] =='\0' && s2[i] != '\0')
return -1;
else if(s1[i] != '\0' && s2[i] == '\0' )
return 1;
else
return 0;
}
int main()
{
printf("stricmp()--> %d\n", stricmp("aBc", "abc"));
printf("mystricmp()--> %d\n", mystricmp("aBc", "abc"));
}
'학교 공부 정리 > 프로그래밍 실습' 카테고리의 다른 글
mystrcpy (0) | 2020.01.23 |
---|---|
구조체 데이터 처리 (0) | 2020.01.23 |
배열 데이터에 대한 평균, 분산, 표준편차 구하기 (0) | 2019.07.11 |
GCD 함수 (0) | 2019.07.11 |
mystrcpy
#include
#include
#include
char *mystrcpy(char *dest, const char *src)
{
int i;
for(i=0; src[i] != '\0'; i++){
dest[i] = src[i];
}
dest[i] = '\0';
return dest; // dest첫번째 주소 리턴
}
//-------------------
int main(){
char s1[32];
strcpy(s1, "Hello, world!");
printf("strcpy()--> %s\n", s1);
char s2[32];
mystrcpy(s2, "Hello, world!");
printf("mystrcpy()--> %s\n", s2);
return 0;
}
'학교 공부 정리 > 프로그래밍 실습' 카테고리의 다른 글
mystricmp (0) | 2020.01.23 |
---|---|
구조체 데이터 처리 (0) | 2020.01.23 |
배열 데이터에 대한 평균, 분산, 표준편차 구하기 (0) | 2019.07.11 |
GCD 함수 (0) | 2019.07.11 |
구조체 데이터 처리
#include
#include
struct class {
int score[10];
int size;
double m; // 평균
double v; // 분산
double s; // 표준편차
};
void process(struct class *data);
void process(struct class *data)
{
int i;
for (i = 0; i < data->size; i++)
data->m += data->score[i];
data->m = data->m / data->size;
for (i = 0; i < data->size; i++)
data->v += pow(data->score[i] - data->m, 2);
data->v = data->v / data->size;
data->s = sqrt(data->v);
}
int main()
{
struct class data = {
{28, 10, 82, 92, 72, 41, 59, 66, 26, 8},
10,
0.0,
0.0,
0.0
};
process(&data);
printf("m = %f, v = %f, s= %f\n", data.m, data.v, data.s);
return 0;
}
배열 데이터에 대한 평균, 분산, 표준편차 구하기
#include
#include
void process(int *arr, int size)
{
int i;
int sum = 0; // 점수들의 합계
double average = 0.0; // 점수들의 평균
double total = 0.0; // 편차의 합을 저장할 변수
double var = 0.0; // 분산
double dev = 0.0; // 표준편차
for (i = 0; i < size; i++)
sum += arr[i];
average = (double)sum / size;
for (i = 0; i < size; i++)
total += pow(arr[i] - average, 2);
var = total / size;
dev = sqrt(var);
printf("평균 : %f\n", average);
printf("분산 : %f\n", var);
printf("표준편차 : %f\n", dev);
}
int main()
{
int arr[] = { 28, 10, 82, 92, 72, 41, 59, 66, 26, 8 };
process(arr, 10);
return 0;
}
GCD 함수
#include
int GCD(int x, int y);
int main(){
int x, y;
printf("두 정수를 입력하세요.:");
scanf("%d %d",&x,&y);
printf("%d %d의 최대공약수는 %d입니다.", x,y,GCD(x,y));
return 0;
}
int GCD(int x,int y){
while(y){ // y인 동안반복 ... 0은 거짓이니 0이 되면 멈춘다.
int r = x % y; // x%y를 나눈 나머지 저장 변수
x = y; // 큰수 저장 변수 x
y = r; // x%y나눈 나머지 나눈 변수 저장 변수 y
}
return x; // y가 0이 된다면 최대 공약수 x 리턴
}
'학교 공부 정리 > 프로그래밍 실습' 카테고리의 다른 글
mystricmp (0) | 2020.01.23 |
---|---|
mystrcpy (0) | 2020.01.23 |
구조체 데이터 처리 (0) | 2020.01.23 |
배열 데이터에 대한 평균, 분산, 표준편차 구하기 (0) | 2019.07.11 |
프로젝트 만들기
자바 프로젝트 만들기
이클립스를 실행 후에 ①File->②New->③Project순으로 클릭하여 프로젝트를 만들 준비를 한다
프로젝트에 경로를 설정해 준다. Next를 눌러준다.
프로젝트 명은 소문자로 해준다.
Finish를 누른다.
일단 No를 눌러준다.
프로젝트 명을 저는 오늘 날짜인 may0510으로 하였다 빨간 부분으로 표시된
프로젝트 명을 더블 클릭하거나 v(화살표) 모양을 클릭하면
JRE System Library에 자바 버전이 JavaSE-1.8이라는것이 확인이 되고 src라는 폴더가 나온다.
src는 소스코드를 넣는 폴더이다.
①src에서 오른쪽 버튼을 누르고 -> ②New버튼을 누른다. ③Class버튼을 누른다.
class를 클릭 시에 위와 같은 화면이 나오는데 Name부분에 클래스 명을 넣어준다.
이때 "클래스 이름은 대문자 명사로 시작해야한다."는 관례가 있다.
나머지는 건들이지 않고 Finish를 눌러주면 default로 만들어 진다.
may5010은 내가 만든 프로젝트 이름이다.
src폴더와 Hello.java사이에 선물꾸러미 모양에 may0510이라는 내가 만든 프로젝트 이름과 동일한 이름에 패키지가 만들어진다.
public class Hello에서 Hello와 Hello.java에서 파일명과 클래스 이름이 동일해야한다.
패키지 아래에 내가 넣은 class이름에 .java가 붙어 있다.
이제 마지막으로 main메서드를 만들어 보고 이번 장을 끝맞치려고한다.
C언어에서는 main함수라고 말하지만
Java에서는 main메서드 라고 말한다.
public static void main(String args[]) {} 작성 시에 대소문자를 틀리면 안된다.
static public void main(String args[]){ }로 해도 되지만 위에 작성 된게 일반적인 패턴이다.
args에 이름도 바껴도 상관없다.
System.out.println()함수에서 System , String 대문자로 시작하는 것들은 전부 클래스이다
그리고 Hello.java 앞에 * 모양이 있는 것은 아직 저장이 되지 않았다는 뜻이다.
Hello world!를 출력해보자
Hello world!를 출력하기 위해서 System.out.println("");를 사용해 출력한다.
F11을 눌러서 컴파일 해준다.
밑에 결과를 확인 할 수 있다.
System.out.println은 enter효과를 해주고
System.out.print 한줄로 나온다.
퀵 정렬
퀵 정렬(Quick Sort)는 분할 정복 알고리즘으로 분류 되지만 정복 후 분할하는 알고리즘이다.
분할할때는 O(n)
합병 시 O(1)
분할 정복과 반대 이다.
퀵정렬은 피봇(pivot)이라는 배열의 원소(숫자)를 기준으로 피봇보다 작은 숫자들은 왼편, 피봇보다 큰 숫자들은 오른푠에 위치하도록 분할한다.
A[12] =ㅣ6ㅣ3ㅣ11ㅣ9ㅣ12ㅣ2ㅣ8ㅣ15ㅣ18ㅣ10ㅣ7ㅣ14ㅣ
피봇을 A[0]=6으로 선택했다고 해보자
ㅣ3ㅣ2ㅣ6ㅣ11ㅣ9ㅣ12ㅣ8ㅣ15ㅣ18ㅣ10ㅣ7ㅣ14ㅣ
피봇 6을 기준으로 6보다 작은것은 왼쪽에 , 6보다 큰것은 오른쪽에 가져다 놓았다.
'학교 공부 정리 > 컴퓨터 알고리즘' 카테고리의 다른 글
합병정렬 (0) | 2019.05.01 |
---|---|
1-2임의의 숫자 찾기 (0) | 2019.05.01 |
1-1최대 숫자 찾기 (0) | 2019.05.01 |