Ерундовина

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Ерундовина

Re: Ерундовина

Задрот » 15 дек 2007, 13:10

Короче большое спаибо! Вот конечный код! Твой немного не так работал. Но ты сделал все спсб ещё раз, чувак!

#include <stdlib.h>
#include <math.h>
#include <conio.h>
void main(){
int r,a[3][3];
int n=3;
int i,j,s,s1;

{
int min,s,r,a[10][10],n,i,j,M,sum[5],tmp,tmp1,k,l;
clrscr();
printf("‚ўҐ¤ЁвҐ а*§¬Ґа*®бвм Єў*¤а*в*®© ¬*ваЁжл");

scanf("%d",&n);

printf("‚ўҐ¤ЁвҐ §**зҐ*Ёп н«Ґ¬Ґ*в®ў");
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{
scanf("%d",&tmp1);
a[j] = tmp1;
}

r=a[0][0];
for(i=0;i<n-1;i++)
{
s=0;
s1=0;
for(j=0;j<=i;j++)
{
s+=a[i-j][j];
s1+=a[n-1-(i-j)][n-1-j];
}
r=min(min(abs(s),r),abs(s1));

}
printf(" %d ",r);
getch();

}
}

Re: Ерундовина

Задрот » 15 дек 2007, 13:00

СПасибо! С нижними диагоналями разберусь, но теперь он выводит мне просто по очереди суммы элементов этих диагоналей(((

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

void main(void)
{
int min,s,r,a[10][10],n,i,j,M,sum[5],tmp,tmp1,k,l;
clrscr();
printf("‚ўҐ¤ЁвҐ а*§¬Ґа*®бвм Єў*¤а*в*®© ¬*ваЁжл");

scanf("%d",&n);

printf("‚ўҐ¤ЁвҐ §**зҐ*Ёп н«Ґ¬Ґ*в®ў");
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{
scanf("%d",&tmp1);
a[j] = tmp1;
}

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

r=a[0][0];
for(i=0;i<n-1;i++)
{
s=0;
for(j=0;j<=i;j++)
{
s+=a[i-j][j];
}
if(abs(s)<r)r=abs(s);
printf(" %d ",r);
getch();

}
}

Re: Ерундовина

ssDev » 15 дек 2007, 12:55

вот твоя программа
#include <stdlib.h>
#include <math.h>

int main(int argc,char** argv){
int r,a[3][3];
int n=3;
int i,j,s,s1;

a[0][0]=10; a[0][1]=5; a[0][2]=3;
a[1][0]=2; a[1][1]=12; a[1][2]=7;
a[2][0]=21; a[2][1]=22; a[2][2]=278;

r=a[0][0];
for(i=0;i<n-1;i++){
s=0;
s1=0;
for(j=0;j<=i;j++){
s+=a[i-j][j];
s1+=a[n-1-(i-j)][n-1-j];
}
r=min(min(abs(s),r),abs(s1));
}
return 0;
}

Re: Ерундовина

ssDev » 15 дек 2007, 12:43

r=a[0][0];
for(i=0;i<n-1;i++)
{
s=0;
for(j=0;j<=i;j++)
{
s+=a[i-j][j];
}
if(abs(s)<r)r=abs(s);

Re: Ерундовина

ssDev » 15 дек 2007, 12:41

хм...
не забудь что тебе надо пройти и под диагональю т.е. повторить то же самое но с одним изменением
s+=a[n-1-(i-j)j][(n-1)-j]

Re: Ерундовина

Задрот » 15 дек 2007, 12:38

Не знаю... ругается вот на эту строку :( напоминаю, у меня турбо си версия два-ноль)
r=min(abs(s),r);

Вот весь листинг:
#include <stdio.h>
#include <math.h>
#include <conio.h>

void main(void)
{
int min,s,r,a[10][10],n,i,j,M,sum[5],tmp,tmp1,k,l;
clrscr();
printf("Введите размерность матрицы");

scanf("%d",&n);

printf("Введите элементы");
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{
scanf("%d",&tmp1);
a[j] = tmp1;
}

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

r=pow(10,8);
for(i=0;i<n-1;i++)
{
s=0;
for(j=0;j<=i;j++)
{
s+=a[i-j][j];
}
r=min(abs(s),r);
}
printf("%d=",r);
getch();

}

Re: Ерундовина

ssDev » 15 дек 2007, 12:30

чтобы определять минимум тебе надо инициализировать переменную результата
правильнее конечно это r=a[0][0] но чтобы не парится я написал r=10**8 т.к. int может взять примерно <10**10
можеш просто поставить r=1000000000
pow и abs определены в math.h если я не ошибаюсь
r=(int)pow(10.0,8.0)
#define min(a,b) (((a)<(b))?(a) :( b))

Re: Ерундовина

Задрот » 15 дек 2007, 12:01

r=pow(10,8);
r=min(abs(s),r);
Что делают эти строчки??? У меня Си их не компилит

Re: Ерундовина

Задрот » 15 дек 2007, 11:30

Спасибо большое! щас проверю

Re: Ерундовина

ssDev » 15 дек 2007, 10:25

матрица a[n][n]
r=pow(10,8);
for(i=0;i<n-1;i++) идем по строкам под над побочной диагональю (a[n-1][0]-a[0][n-1])
{
s=0;
for(j=0;j<=i;j++) по столбцам
{
s+=a[i-j][j]; диагональ
}
r=min(abs(s),r);
}

Вернуться к началу