Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Z столбца двумерного массива


Автор: Ufyljy 16.10.2007, 15:57
Код

/* -_-_ Создано: 16.10.2007
                 Автор: 
        Дополнения: 
                    Коррекции:
        Благодарности: wils0n, DjoNIK, FREEDEV, Kuvaldis
*/

#include<stdio.h>
#include<conio.h>

#define br putchar('\n');
#define hr printf("-------------------------------------------------------------");
main()
{
      int a[2][2],d[2]={0,0};
      
      int i,k,l; int b=0,c=0;
      
      // Заполнение двумерного массива
      for(i=1; i <=2; i++)
      {        
               if(i > 1){br;}
               
               for(k=1; k <=2; k++)
               {
                        printf("Enter a[%d][%d]: ",i,k);
                        scanf("%d",&a[i][k]);
                        
                        c+=a[i][k];
                        if(i != i+1){d[i-1]+=a[i][k];}
               }
      
      }
      
      // Вывод двумерного массива
      for(i=1; i <=2; i++)
      {
               br;
               for(k=1; k <=2; k++)
               {
                        printf("%d ",a[i][k]);
               }
      }
      
      br; hr; br;
      
      // Вывод общей суммы столбцов
      printf("Summa vseh chisel: %d",c);
      
      br;
      
     // Вывод суммы каждой строки
      printf("Summa kajdoy stroki (left -> right): ");
      for(l=0; l < 2; l++){printf("%d,",d[l]); }
      
getch();
}      



Нашел сумму каждой строки, не могу найти сумму отдельного столбца. Может поможете?

Автор: Rodman 16.10.2007, 16:04
Код

/* -_-_ Создано: 16.10.2007
                 Автор: 
        Дополнения: 
                    Коррекции:
        Благодарности: wils0n, DjoNIK, FREEDEV, Kuvaldis
*/
#include<stdio.h>
#include<conio.h>
#define br putchar('\n');
#define hr printf("-------------------------------------------------------------");
 main()
{
      int a[2][2],d[2]={0,0},d2[2]={0,0}
      
      int i,k,l; int b=0,c=0;
      
      // Заполнение двумерного массива
      for(i=1; i <=2; i++)
      {        
               if(i > 1){br;}
               
               for(k=1; k <=2; k++)
               {
                        printf("Enter a[%d][%d]: ",i,k);
                        scanf("%d",&a[i][k]);
                        
                        c+=a[i][k];
                        if(i != i+1)
                             {d[i-1]+=a[i][k];}
                         d2[i-1]+=a[k][i];//а так?
               }
      
      }
      
      // Вывод двумерного массива
      for(i=1; i <=2; i++)
      {
               br;
               for(k=1; k <=2; k++)
               {
                        printf("%d ",a[i][k]);
                        b+=
               }
      }
      
      br; hr; br;
      
      // Вывод общей суммы столбцов
      printf("Summa vseh chisel: %d",c);
      
      br;
      
     // Вывод суммы каждой строки
      printf("Summa kajdoy stroki (left -> right): ");
      for(l=0; l < 2; l++){printf("%d,",d[l]); }
      
getch();
}   

Автор: Lazin 16.10.2007, 16:11
В твоем примере происходит выход за границы массива, если A[2], то индекс может принимать значения 0 и 1.
Код

      int a[2][2],d[2]={0,0},e[2]={0,0};
      
      int i,k,l; int b=0,c=0;
      
      // Заполнение двумерного массива     
      for(i=0; i < 2; ++i)
      {                      
               for(k=0; k < 2; ++k)
               {
                        printf("Enter a[%d][%d]: ",i,k);
                        scanf("%d",&a[i][k]);
                        
                        c+=a[i][k];
                        d[i] += a[i][k];
                        e[i] += a[k][i];//сумма столбца
               }
               br;
      }

Автор: Ufyljy 17.10.2007, 14:37
Код

/* -_-_ Создано: 16.10.2007
                 Автор: 
        Дополнения: 
                    Коррекции:
        Благодарности: wils0n, DjoNIK, FREEDEV, Kuvaldis
*/

#include<stdio.h>
#include<conio.h>

#define br putchar('\n');
#define hr printf("-------------------------------------------------------------");
main()
{
    int a[2][2],d[2]={0,0}, e[2]={0,0};
      
      int i,k,l,m; int b=0,c=0;
      
      // Заполнение двумерного массива     
      for(i=0; i < 2; ++i)
      {                      
               for(k=0; k < 2; ++k)
               {
                        printf("Enter a[%d][%d]: ",i,k);
                        scanf("%d",&a[i][k]);
                        
                        c+=a[i][k];
                        d[i] += a[i][k];
                        e[i] += a[k][i];//сумма столбца
               }
               br;
      
      }
      
      // Вывод двумерного массива
      for(i=0; i < 2; i++)
      {
               br;
               for(k=0; k < 2; k++)
               {
                        printf("%d ",a[i][k]);
               }
      }
      
      br; hr; br;
      
      // Вывод общей суммы столбцов
      printf("Summa vseh chisel: %d",c);
      
      br;
      
     // Вывод суммы каждой строки
      printf("Summa kajdoy stroki (left -> right): ");
      for(l=0; l < 2; l++){printf("%d,",d[l]); }
      br;
     // Вывод суммы каждого столбца
      printf("Summa stolbca (left -> right): ");
      for(m=0; m < 2; m++){printf("%d,",e[m]); }      
      
getch();
}      

При выводе к сожалению первое значение суммы строки не выводит


Автор: Lazin 17.10.2007, 15:57
Ошибка в том, что, когда ты вычисляешь сумму столбца, у тебя все числа еще не введены, и получается, чтосумма по столбцам считается неправильно
при
i = 1, k = 0
получится
Код

 d[1] += a[1[0];
 e[1] += a[0][1];//этот элемент массива еще не введен


Код

#include<stdio.h>
#include<conio.h>
#define br putchar('\n');
#define hr printf("-------------------------------------------------------------");
int main()
{
    int a[2][2],d[2]={0,0}, e[2]={0,0};
      
      int i,k,l,m; int b=0,c=0;
      
      // Заполнение двумерного массива     
      for(i=0; i < 2; ++i)
      {                      
               for(k=0; k < 2; ++k)
               {
                        printf("Enter a[%d][%d]: ",i,k);
                        scanf("%d",&a[i][k]);
               }
               br;
      
      }

      for(i=0; i < 2; ++i)
      {                      
               for(k=0; k < 2; ++k)
               {
                        c+=a[i][k];
                        d[i] += a[i][k];
                        e[i] += a[k][i];//сумма столбца
               }
      }
      
      // Вывод двумерного массива
      for(i=0; i < 2; i++)
      {
               br;
               for(k=0; k < 2; k++)
               {
                        printf("%d ",a[i][k]);
               }
      }
      
      br; hr; br;
      
      // Вывод общей суммы столбцов
      printf("Summa vseh chisel: %d",c);
      
      br;
      
     // Вывод суммы каждой строки
      printf("Summa kajdoy stroki (left -> right): ");
      for(l=0; l < 2; l++){printf("%d,",d[l]); }
      br;
     // Вывод суммы каждого столбца
      printf("Summa stolbca (left -> right): ");
      for(m=0; m < 2; m++){printf("%d,",e[m]); }      
      
getch();
}     

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)