Другие языки программирования и технологии

помогите дописать лабу в C (Си)

Нужно создать массив в котором необходимо найти min и max элемент и поменять их местами и готовый массив вывести на экран. Пробовал как в Pascal написать
int temp
temp = a[max];
a[min] = a[min];
a[min] = temp

Но ничего не получается. помогите пожалуйста заранее спасибо. Вот мой код:

#include <stdio.h>

int main(int argc, char *argv[])
{
int n;
printf("dlina massiva: "); scanf("%d",&n);
int a[n];
printf("Wwedite chisla massiva: ");
for(int i=0;i<n;i++)>);
int max = a[0], posmax = 0;
for(int i=1;i<n;i++){>){
max = a;
posmax = i;
}
}
int min =a[0], posmin = 0;
for(int i=1;i<n;i++){>a){
min = a;
posmin =i;
}
}
printf("maximum: %d,\nposition: %d\n",max,posmax);
printf("minimum: %d,\nposition: %d\n",min,posmin);
return 0;
}
> Интересно, а в Паскале ты как массив длиной n определял? Тоже сначала вводил n
Вот, не надо передергивать, в FP, Delphi, PABC. NET, и в Си стандарта С99 и старше можно сначала ввести n, а потом задать массив длинной n.

------------------------------------
C99 и выше:

#include <stdio.h>

int main() {
    int n;
    printf("dlina massiva: ");
    scanf("%d",&n);
    int a[n];
    printf("Wwedite chisla massiva: ");
    for (int c = 0; c < n; c++) scanf("%d", &a[c]);

    int cmin = 0;
    int cmax = 0;
    for (int c = 1; c < n; c++) {
        if (a[c] < a[cmin]) cmin = c;
        if (a[c] > a[cmax]) cmax = c;
    }

    int tmp = a[cmin];
    a[cmin] = a[cmax];
    a[cmax] = tmp;

    printf("Preobrazovannyy massiv:");
    for (int c = 0; c < n; c++) printf(" %d", a[c]);

    return 0;
}

------------------------------------
C90/89:

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

int main() {
    int n, *a, c, cmin = 0, cmax = 0, tmp;
    printf("dlina massiva: ");
    scanf("%d",&n);
    a = (int *)malloc(n * sizeof(a[0]));
    printf("Wwedite chisla massiva: ");
    for (c = 0; c < n; c++) scanf("%d", &a[c]);

    for (c = 1; c < n; c++) {
        if (a[c] < a[cmin]) cmin = c;
        if (a[c] > a[cmax]) cmax = c;
    }

    tmp = a[cmin];
    a[cmin] = a[cmax];
    a[cmax] = tmp;

    printf("Preobrazovannyy massiv:\n");
    for (c = 0; c < n; c++) printf("%d ", a[c]);

    free(a);
    return 0;
}
Слава Мартюков
Слава Мартюков
78 170
Лучший ответ
Интересно, а в Паскале ты как массив длиной n определял? Тоже сначала вводил n, а потом добавлял
var a:array[1..n] of integer?
Ну и "ничего не получается" - это не лечится. Вот если "выводит такую-то ошибку, а я не понимаю, почему" - помочь можно.