Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Почему не заполняет массив?


Автор: Baton2007 24.2.2008, 17:19
Написал программу суть которой : Дана квадратная матрица N . Вычислить среднее арифметическое положительных элементов матрици , стоящих выше главной диагонали.
Вот листинг:
Код

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

void main()
{   int n=6;
    int s=3;
    int i;
    int ser;
   int A[3][3];
   srand(time(0));
   for ( i=0;i<n;i++)
   {

     A[i]=rand()%10;

   }
   printf("\n");


  for (int i=0; i < n; i++){
    for (int j=1; j < s; j++){
      if (i < j && i>0)
         ser+=i;
            ser/=10;}}
              printf("ser=%d",ser);
      getch();
}


Компилю на Dev ++ и он ругается на строку  A[i]=rand()%10;  и пишет  incompatible types in assignment of `int' to `int[3]'
Помогите исправить ошибку и посмотрите правильно ли я прогу  написал??

Автор: xKOCMOCx 24.2.2008, 17:57
Цитата(Baton2007 @ 24.2.2008,  17:19)
Компилю на Dev ++ и он ругается на строку  A[i]=rand()%10;  и пишет  incompatible types in assignment of `int' to `int[3]'

Ну это естественго, что он ругается, что это вообще за заполнение такое?
Никакой логике не поддаётся.....
Вот набросал рабочий код:
Код

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

void main()
{   int n=3;
    int s=3;
    int flag = 0;
    int ser = 0;
   int A[3][3];
   srand(time(0));
   for(int ii = 0; ii < n; ii ++)
   for (int i=0;i<s;i++)
     A[i][ii]=rand()%-10;

    for (int i=0; i < n; i++){
    for (int j=0; j < s; j++)
    printf("%d",A[i][j]);
    printf("\n");
    }


  for (int i=0; i < n; i++)
    for (int j=0; j < s; j++)
      if (j - i > 0 && A[i][j] > 0)
         ser+=A[i][j], flag ++;
         printf("summ=%d\n",ser);
            ser = ser/flag;
              printf("ser=%d",ser);
      getch();

}

Автор: Baton2007 24.2.2008, 18:02
Спасибо понял!

Автор: Baton2007 29.2.2008, 16:30
Народ задали задачу :в квадратной матрице найти сумму элементов побочной диагонали и разделить на полученную сумму все элементы последнего столбца.
Я написал так подскажите правильно или нет и где ошибки!
Код


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

void main()
{
  int k;
  int n=3;// число элементов
    int s=3;// число строк
     int z;
     int d=0;
     int A[3][3];
     srand(time(0));
     for(int ii = 0; ii < n; ii ++) //заполнение массива
   for (int i=0;i<s;i++){
     A[i][ii]=rand()%-10;}
         for (int i=0; i < n; i++){  //вывод массива на экран
    for (int j=0; j < s; j++)
    printf("%d",A[i][j]);
    printf("\n");
    }
  printf("\n");
   for (int i=0; i < n; i++)
    for (int j=0; j < s; j++)
   for (d=0;d!=n; d++){
     z=A[i][j];i++;n--;
     k=k+A[i][n];i++;}
     z=z/k;
     printf("%d",z);
     getch();
}


Автор: JackYF 29.2.2008, 17:49
Цитата(Baton2007 @  29.2.2008,  15:30 Найти цитируемый пост)
Я написал так подскажите правильно или нет и где ошибки!

а самому запустить и посмотреть? smile

Автор: Baton2007 3.3.2008, 15:27
Подскажите в чем проблема есть задача : Дана матрица размерности N на M ? надо найти в матрице первую по порядку строку с наибольшей суммой элементов и вывести ее номер на экраню Я написал прогу но переменная  st в которую записуется строка с наибольшей суммой элементов всегда равна 2 , подскажите в чем ошибка??
Код
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <ctime>
void main()
{int N=3;// число элементов
int M=3;// число строк
int avg;
int st=0;
int A[3][3]; //матрица
 srand(time(0));
   for(int i = 0; i < N; i ++) //заполнение массива
   for (int j=0;j<M;j++)
     A[j][i]=rand()%-10;

     for (int i=0; i < N; i++){  //вывод массива на экран
    for (int j=0; j < M; j++)
    printf("%d",A[j][i]);
    printf("\n");
    }


int max_val=avg;
for (int j = 0; j < M; j++) {
avg=0;
for (int i = 0; i < N; i++) {
avg+=A[j][i];
if(avg>max_val)max_val=avg;st=j;
}}
printf("%d",st);
getch();
}


Автор: _stranger_ 3.3.2008, 19:42
проблема видимо тут:
Код


if(avg>max_val)
{
   max_val=avg;
   st=j;
}

Автор: Optimus 3.3.2008, 23:40
И ещё, здесь avg ещё не инициализирована
Код

int max_val = avg;

По этому добавляем
Код

avg = 0;
int max_val = avg;


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