HackerRank üzerinde C'deki bir sorunu çözmeye çalışıyordum. N satır ve sütunları olan kare bir matris vardır. Meydan okuma, matrisin iki köşesi arasındaki mutlak farkı tek bir tam sayı olarak basmaktır. Daha önce ("") gereksiz bir printf eklemek sürece çalışmaz doğru cevabı ancak kodun sonuna printf() deyimi elde edebilir kulüpler https://www.hackerrank.com/challenges/diagonal-differenceBaşka bir printf olmadığı sürece Printf çalışmaz
: Burada
bağlantı var döngü ifadesi için. Birisi bunun neden olduğunu açıklayabilir mi? İştepeşin
yılındaTeşekkür kod:
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <stdbool.h>
int main()
{
int n;
scanf("%d",&n);
int a[n][n],sum_d1=0,sum_d2=0,a_i,a_j;
for(a_i = 1; a_i <= n; a_i++)
{
for(a_j = 1; a_j <= n; a_j++)
{
scanf("%d",&a[a_i][a_j]);
if(a_j==a_i)
sum_d1=sum_d1+a[a_i][a_j];
}
}
printf("");// the last printf works only when this statement is present
for(a_i=1;a_i<=n;a_i++)
{
for(a_j=n;a_j>0;a_j--)
{
if((a_i+a_j)==(n+1))
sum_d2=sum_d2+a[a_i][a_j];
}
}
printf("%d",abs(sum_d1-sum_d2)); //this doesn't work if there is no printf above
return 0;
}
Eğer pozisyonda dizinizi indeksleme olduğunuz için tanımsız davranışa sahip '[ n] '. – paddy
Ayrıca yeni bir satır hatası da var. Düzeltmek için biçim dizenizin sonuna '\ n 'ekleyin. Bu şekilde hat, program çıkışı üzerine sarkıtmak yerine düzgün bir şekilde bitecektir. –
@TomKarzes Boş dize bundan önce neden bunu düzeltir? – Barmar