Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <math.h>
- float find_cub(int dim, float * A){
- float answer = 0, sum = 0;
- for (int i=0;i<dim;i++){
- sum = 0;
- for(int j=0;j<dim;j++){
- sum+=abs(A[i*dim+j]);
- }
- if(answer<sum){
- answer = sum;
- }
- }
- return answer;
- }
- float find_oct(int dim, float * A){
- float answer = 0, sum = 0;
- for(int j=0;j<dim;j++){
- sum = 0;
- for(int i=0;i<dim;i++){
- sum+=abs(A[i*dim+j]);
- }
- if(answer < sum){
- answer = sum;
- }
- }
- return answer;
- }
- float find_euc(int dim, float * A){
- float answer=0;
- for(int i=0;i<dim;i++){
- for(int j=0;j<dim;j++){
- answer+=A[i*dim+j]*A[i*dim+j];
- }
- }
- printf("%d\n", answer);
- return sqrt(answer);
- }
- int main(){
- printf("Данная программа находит различные нормы матрицы\n");
- int dim;
- while(1){
- scanf("%d", &dim);
- if(dim<=0){
- printf("Размерность должна быть положительным целым числом\n");
- }
- else{
- break;
- }
- }
- float * A = (float *)malloc(dim*dim*sizeof(float));
- for(int i=0;i<dim;i++){
- printf("Введите %d линию\n", i+1);
- for(int j=0;j<dim;j++){
- scanf("%f", &A[i*dim+j]);
- }
- }
- float euclNorm = find_euc(dim,A);
- float cubeNorm = find_cub(dim,A);
- float octNorm = find_oct(dim,A);
- printf("Нормы матрицы равны:\n%.3f - кубическая\n%.3f - октаэдрическая\n%.3f - евклидова", cubeNorm, octNorm, euclNorm);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement