ポインタを指すポインタの方法で文字列と整数をソート
【問題1】
ポインタを指すポインタの方法で5文字列をソートします.
【C言語】
【問題2】
ポインタを指すポインタの方法でn個の整数をソートします.
【C言語】
ポインタを指すポインタの方法で5文字列をソートします.
【C言語】
#include
#include
void sort(char **p) {
int i, j, k;
char *temp;
for (i = 0; i < 4; i++) {
k = i;
for (j = i + 1; j < 5; j++)
if (strcmp(*(p+k), *(p+j)) > 0)
k = j;
if (k != i) {
temp = *(p+k);
*(p+k) = *(p+i);
*(p+i) = temp;
}
}
}
int main() {
char **p,*pstr[5],str[5][20];
int i ;
for(i=0;i<5;i++)
pstr[i]=str[i];
for(i=0;i<5;i++)
scanf("%s",pstr[i]);
p=pstr;
sort(p);
for(i=0;i<5;i++)
printf("%s
",pstr[i]);
return 0;
}
【問題2】
ポインタを指すポインタの方法でn個の整数をソートします.
【C言語】
/*
* 8-21.c
*
* Created on: 2015 6 30
* Author: lenovo
*/
#include
void sort(int **p, int n) {
int i, j;
int *temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++)
if (**(p + i) > **(p + j)) {
temp = *(p + i);
*(p + i) = *(p + j);
*(p + j) = temp;
}
}
}
int main() {
int n;
scanf("%d", &n);
int **p, *pstr[20], a[n];
int i;
for (i = 0; i < n; i++)
pstr[i] = &a[i];
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
p = pstr;
sort(p, n);
for (i = 0; i < n; i++) {
printf("%d\t", *pstr[i]);
}
return 0;
}