Jump to content

Моля за малко помощ - програмиране на C


Препоръчан пост

Дадена ми е следната курсова задача : 

Да се състави програма за обработка на масива A[N,N], където данните са реални числа в интервала [-1000;1000]. Програмата да извърши следните действия:

- да се образува едномерен масив C , елементите на който са елементи на масива А намиращи се под главния диагонал;

- полученият масив да се сортира по големина;

Почти съм я написал, но не ми взима всички елементи под главния диагонал. Ако може някой да удари 1 рамо ще съм много благодарен.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int const k = 15;
float d[k][k],c[k],q,w;
int n,j,i,m=0;
int main ()
{ 
    printf("Vuvejdane na vhodni danni:\n");
    printf("Vuvedete broi redove i broi stulbove n=");
    scanf("%d",&n);
      for(i=0;i<n;i++)
       for(j=0;j<n;j++)
        do
         { 
          printf("Vuvedete A[%d][%d]:",i,j);
          scanf("%f",&d[i][j]);
         }
        while (((d[i][j])<-1000) || ((d[i][j])>1000));
                       
    printf("Izvejdane na vhodni danni :\n");
     for (i=0;i<n;i++)
     {
      for (j=0;j<n;j++)
       printf("%9.1f ",d[i][j]);
       printf("\n");
     }
         
    printf("Izvejdane na danni ot ednomeren masiv C:\n");
     for (i=0;i<n;i++)
      for (j=0;j<n;j++)
        if (i>j)
        c[i]=d[i][j];
     for (i=1;i<n;i++)
      printf("C[%d] e: %9.1f \n",i,c[i]);
                    
                    
    printf("Sortirane na masiv C po razmer:\n");
     for (i=1;i<n;i++)
      if (c[i] > c[i+1]) 
       {
               q=c[i];
               w=c[i+1];
        q=q+w;
        w=q-w;
        q=q-w;
        c[i]=q;
        c[i+1]=w;
       }
      for (i=1;i<n;i++)
       printf("C[%d] e: %9.1f \n",i,c[i]);
                                                                
    system("pause");
    return 0;
}
 
Link to comment
Сподели другаде

printf("Izvejdane na danni ot ednomeren masiv C:\n");
     for (i=0;i<n;i++)
      for (j=0;j<n;j++)
      if (i>j){
        printf("%.1f\n",d[i][j]);
        c[x]=d[i][j];
        x++;
        printf("\nElements C[%.1f]\n",c[x]);
      }

Така би трябвало елементите под главния диагонал на матрицата да бъдат вкарани в масива c[x]. Тествах с 3x3 и 4x4 случаи и работи. До колкото видях обаче, сортирането не работи.

 

П.С. Един съвет - кодът е много нечетлив, по-добре е да слагаш фигурни скоби, а оптималния случай е да разделиш нещата на подпрограми и да слагаш коментари в кода, защото след няколко дни и ти самия няма да разбереш какво си писал. Забравих да кажа, че съм добавил една променлива int x;, която използвам при масива c[x], макар, че може да се мине и без нея, но го направих с цел простота.

Link to comment
Сподели другаде

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гост
Отговори на тази тема

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   Не можете да качите директно снимка. Качете или добавете изображението от линк (URL)

Loading...
×
×
  • Създай ново...