Найти значения наибольшего и наименьшего элементов матрицы и посчитать их среднее арифметическое - C (СИ)
Формулировка задачи:
1)Дана действительная матрица 6x9 во втором случем MxN.Найти значения наибольшего и наименьшего элементов, и посчитать их среднее арифметическое.
как исправить этот код для действительной матрицы, иначе в некоторых случаях к примеру вместо 5.5 пишет просто 5(целочисленные значения), там нужно что то с double придумать, и ещё нужен код этой программы в случае чтения матрицы из файла
2)Даны символы s1, s2 ...sN. преобразовать последовательность, удалив из неё все символы не являющиеся буквами.
компилируется, выскакивет два придупреждения, призапуске вылетает,не могу понять в чём проблема.
Заранее благодарю =*
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int *a;
int i,j,n,m;
int max, min;
printf("Vvedite dlinnu stroki " );
scanf("%d",&n);
printf("Vved kl-vo stolb");
scanf("%d",&m);
a = (int*)malloc(n*m*sizeof(int));
clrscr();
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
{
printf("A[%d][%d]=",i,j);
scanf("%d", &(a[m*i+j]));
}
max = min = a[0];
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
printf("%4d ",a[m*i+j]);
}
printf("\n");
}
for (i=0;i<n;i++)
for (j=0;j<m;j++)
{
if (a[m*i+j] > max) max=a[m*i+j];
if (a[m*i+j] < min) min=a[m*i+j];
}
printf("max = %d\nmin = %d\nsrednee = %d\n",
max, min, (max + min)/2);
getch();
return 0;
}#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
const char *fname = "posled.txt";
FILE *f = NULL;
int ch;
if((f = fopen(fname, "r")) == NULL)
{
perror("Can't open file");
exit(1);
};
printf("Before formating:\n");
while((ch = getc(f)) != EOF)
putchar(ch);
fseek(f, 0, SEEK_SET);
printf("After formating:\n");
while((ch = getc(f)) != EOF)
{
if(isalpha(ch))
putchar(ch);
};
fclose(f);
getchar();
return 0;
};Решение задачи: «Найти значения наибольшего и наименьшего элементов матрицы и посчитать их среднее арифметическое»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
double *a;
int i,j,n,m;
double max, min;
printf("Vvedite dlinnu stroki = " );
scanf("%d",&n);
printf("Vved kl-vo stolb = ");
scanf("%d",&m);
a = (double*)malloc(n*m*sizeof(double));
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
{
printf("A[%d][%d]=",i,j);
scanf("%lf", &(a[m*i+j]));
}
max = min = a[0];
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
printf("%5.2lf ",a[m*i+j]);
}
printf("\n");
}
for (i=0;i<n;i++)
for (j=0;j<m;j++)
{
if (a[m*i+j] > max) max=a[m*i+j];
if (a[m*i+j] < min) min=a[m*i+j];
}
printf("max = %5.2lf\nmin = %5.2lf\nsrednee = %5.2lf\n",
max, min, (max + min)/2);
getch();
free(a);
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Создается матрица размером n на m и инициализируется нулями.
- Задаются значения элементов матрицы с помощью ввода с клавиатуры.
- Начальные значения максимального и минимального элементов устанавливаются равными первому элементу матрицы.
- Происходит поиск максимального и минимального элементов матрицы путем сравнения каждого элемента с текущими значениями максимального и минимального элементов.
- Выводятся на экран все элементы матрицы.
- Выводятся на экран значения максимального, минимального и среднего элементов матрицы.
- Осуществляется выход из программы с помощью функции getch() и освобождается память, выделенная под матрицу. Список номеров элементов:
- n - количество строк в матрице
- m - количество столбцов в матрице
- a - указатель на матрицу
- i, j - индексы для доступа к элементам матрицы
- max - переменная для хранения максимального элемента матрицы
- min - переменная для хранения минимального элемента матрицы
- getch() - функция для получения ввода с клавиатуры
- free() - функция для освобождения памяти
- return 0 - завершение программы