Untitled

 avatar
unknown
plain_text
2 years ago
5.3 kB
9
Indexable
#include <stdio.h>
#include <stdlib.h>

int mult_2(int num){
    return num*2;
}

int exp_3(int num){
    return num*num*num;
}

int abs(int num){
    if(num < 0)
        return -num;
    else
        return num;
}

void forEachElement(int* array, int n, int(*func)(int)){
    for (int i = 0; i<n; i++){
        array[i] = func(array[i]);
    }
}

int main() {
    int size = 500;
    int arr[size];
    int n;
    for (int i = 0; i<size; i++){
        scanf("%d", &arr[i]);
    }
    scanf("%d", &n);

    switch (n) {
        case 1: forEachElement(arr, size, mult_2); break;
        case 2: forEachElement(arr, size, exp_3); break;
        case 3: forEachElement(arr, size, abs); break;
        default: printf("Error"); return 0;
    }

    for (int i = 0; i<size-1; i++){
        printf("%d\n", arr[i]);
    }
    printf("%d", arr[size-1]);
    return 0;
}











#include <stdlib.h>
#include <stdio.h>
#include <math.h>

int cmp_int(const void* a, const void* b){
    return *(int*)a - *(int*)b;
}

int cmp_char(const void* a, const void* b){
    return *(char*)a - *(char *)b;
}

int cmp_double(const void* a, const void* b) {
    if(fabs(*(double*) a - *(double*) b) < 0.0001)
        return 0;
    if (*(double*) a - *(double*) b > 0)
        return 1;
    return -1;
}

int universalMax(void* arr, int arrsize, int arrtype, int (*cmp)(const void*, const void*)){

    char* bytes = (char*)arr;
    char* max = (char*)arr;
    int indx = 0;

    for(int i=0; i < arrsize * arrtype; i+=arrtype){
        if(cmp(bytes+i, max)>0){
            indx = i/arrtype;
            max = bytes+i;
        }
    }
    return indx;
}


int main(){
    int arrsize = 20;

    int arrtype;
    int res;

    scanf("%d", &arrtype);
    getchar();

    int* arr = malloc(arrtype * arrsize);

    switch (arrtype) {

        case 1:
            for(int i=0; i < arrsize; i++){
                scanf("%c", (char*)arr+i);
                getchar();
            }
            res = universalMax(arr, arrsize, arrtype, cmp_char);
            break;

        case 4:
            for(int i=0; i < arrsize; i++){
                scanf("%d", (int*)arr+i);

            }
            res = universalMax(arr, arrsize, arrtype, cmp_int);
            break;

        case 8:
            for(int i=0; i < arrsize; i++){
                scanf("%lf", (double*)arr+i);
            }
            res = universalMax(arr, arrsize, arrtype, cmp_double);
            break;

    }

    printf("%d", res);
    return 0;
}











#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int my_compare(const void *a, const void *b) {
    char *sent1 = *(char **) (a);
    char *sent2 = *(char **) (b);
    return strlen(sent1) - strlen(sent2);
}

int main() {
    char **sentences = malloc(sizeof(char *) * 100);
    int i = 0;
    int s_cnt = 0;
    sentences[s_cnt] = calloc(1000, sizeof(char));
    for (int j = 0; j < 1001; j++) {
        char c = getchar();
        if (c == '\n')
            break;
        else
            sentences[s_cnt][i++] = c;
        if (c == '.') {
            char c = getchar();
            sentences[++s_cnt] = calloc(1000, sizeof(char));
            i = 0;
            if (c == '\n')
                break;
        }
    }
    qsort(sentences, s_cnt, sizeof(char *), my_compare);
    for (int k = 0; k < s_cnt; k++) {
        printf("%s", sentences[k]);
        if (k != s_cnt-1)
            printf(" ");
    }
    return 0;
}









#include <stdlib.h>
#include <stdio.h>
#include <string.h>
struct Book {
    char name[30];
    char author[30];
    unsigned int pages;
    char isbn[20];
};

int compare (const void* a, const void* b){
    struct Book* book1 = (struct Book*)(a);
    struct Book* book2 = (struct Book*)(b);
    return strcmp(book2->author, book1->author);
}

int main(){
    int cnt;
    scanf("%d", &cnt);

    struct Book* books = malloc(sizeof(struct Book)*cnt);
    for (int i = 0; i<cnt; i++){
        struct Book book;
        scanf("%s %s %d %s", book.name, book.author, &book.pages, book.isbn);
        books[i] = book;
    }
    qsort(books, cnt, sizeof(struct Book), compare);

    for (int j = 0; j < cnt; j++){
        printf("%s %s %d %s", books[j].name, books[j].author, books[j].pages, books[j].isbn);
        if (j != cnt - 1)
            printf(" ");
    }
    return 0;
}












#include <stdlib.h>
#include <stdio.h>
#include <string.h>

struct Country {
    char name[30];
    unsigned int population;
    char capital[30];
};

int compare (const void* a, const void* b){
    struct Country* c1 = (struct Country*)(a);
    struct Country* c2 = (struct Country*)(b);
    int res = strcmp(c1->name, c2->name);
    if (res == 0)
        return c1->population - c2->population;
    else
        return res;
}

int main(){
    int cnt;
    scanf("%d", &cnt);

    struct Country* array = malloc(sizeof(struct Country)*cnt);
    for (int i = 0; i<cnt; i++){
        struct Country country;
        scanf("%s %u %s", country.name, &country.population, country.capital);
        array[i] = country;
    }
    qsort(array, cnt, sizeof(struct Country), compare);

    for (int j = 0; j < cnt; j++){
        printf("%s %u %s", array[j].name, array[j].population, array[j].capital);
        if (j != cnt - 1)
            printf(" ");
    }
    return 0;
}



Editor is loading...