Studyprog

Saytda qeydiyyat

Saytda qeydiyyatdan keçmək üçün bura keçin və göstərişlərə nəzər yetirin.

DİQQƏT! Qeydiyyatdan keçən e-mail ünvani düzgün olmaldır, bura aktivasiya kodu göndəriləcək. Aktiv olmayan istifadəçi məsələ göndərə bilməz.

Yoxlanış sistemin nətiçələri

Həllər göndəriləndən sonra sistem tərəfindən aşağıdaki cavabları almaq olar:

Nəticə Anlayış Səbəb
Hesablanıb Həlliniz sistemdə bütün testləri keçib
Yanlış cavab Həllinizin testə cavabı yanlışdı
  1. Sizin algoritminiz səhvdir
  2. Həllinizin çıxış formatı məsələnin çıxış formatına uyğun deyil
  3. Programiniz giriş/çıxış növü göstərilməyib
Zaman həddi tükənib Həlliniz gec işləyir
  1. Algoritiminiz optimal deyil
  2. Proqramda sonsuz dövr var
  3. Giriş verirənləri şablona uyğun oxunmur
Yaddaş həddi tükənib Həlliniz çox yaddaş yeri işlədir
  1. Proqramda çox yaddaş yeri yaradılıb
  2. Proqramda olan rekursiya steki yaddaş həddini aşıb
İcra xətası Proqram xəta ilə bitdi
  1. Proqrama aid olmayan yaddaş ünvanına çağırış
  2. Səhv riyazi əməliyyatlar (sıfıra bölmə və ya loqarifmin kritik nöqtələri və s.)
Proqram funksiyaları çağırışı həddi tükənib Həlliniz klassin metodlarına və ya funksiyalarina çox müraciyət edir
  1. Məsələnin şərtində olan funksiya cağırışı həddi aşılıb
Yığma səhvi Proqram kodunun yığılmasında səhv
  1. Proqram kodunuzda sintaksik səhv var
  2. Düzgün kompilyator seçilməyib

Məsələ həllərinin göndərilməsi

Saytda məsələlər kateqoriyaya bölünür, və onların həllini göndərmək üçün aşağıdaki qaydalara diqqət yetirmək lazımdır.

Olimpiada məsələləri

Bu məsələlərdə giriş və çıxış verilənləri konsol və ya "input.txt"/"output.txt" faylları vasitəsı ilə proqrama verilir və alınır. Çıxış verilənləri göstərilən şablona uyğun olmalıdır. Sadə məsələ? məsələsini nümunə gətirməklə reallaşdırmalara nəzər salaq.

C dilində proqramin reallaşdırılması (giriş/çixış konsoldan)
#include <stdio.h>
int main(void) 
{
   int a;
   scanf("%d", &a);
   printf("%d %d", a/10, a%10);
   return 0;
}
C dilində proqramin reallaşdırılması (giriş/çixış fayllardan)

Birinci üsul: giriş/çıxış yonəldilməsi. Bu üsul kodu analiz etmək üçün asandır.

#include <stdio.h>
int main(void) 
{
   freopen("input.txt","r",stdin);
   freopen("output.txt","w",stdout);
   int a;
   scanf("%d", &a);
   printf("%d %d", a/10, a%10);
   fclose(stdin);
   fclose(stdout);
   return 0;
}

İkinci üsul:

#include <stdio.h>
int main(void) 
{
   FILE *fin = fopen("input.txt","r");
   FILE *fout = fopen("output.txt","w");
   int a;
   fscanf(fin, "%d", &a);
   fprintf(fout, "%d %d", a/10, a%10);
   fclose(fin);
   fclose(fout);
   return 0;
}
C++ dilində proqramin reallaşdırılması (giriş/çixış konsoldan)
#include <iostream>
using namespace std;
int main(void) 
{
   int a;
   cin >> a;
   cout << a/10 << " " << a%10;
   return 0;
}
C++ dilində proqramin reallaşdırılması (giriş/çixış fayllardan)
#include <fstream>
using namespace std;
int main(void) 
{
   ifstream fin("input.txt");
   ofstream fout("output.txt");
   int a;
   fin >> a;
   fout << a/10 << " " << a%10;
   fin.close();
   fout.close();
   return 0;
}
Java dilində proqramin reallaşdırılması (giriş/çixış konsoldan)
DİQQƏT! Əsas klassin adı `main` olmalıdır
import java.io.*;
import java.util.*;

public class main
{
   public static void main(String[] args)
   {
      Scanner in = new Scanner(System.in);
      PrintWriter out = new PrintWriter(System.out);
      int a = in.nextInt();
      out.print(a/10+" "+a%10);
      out.flush();
   }
}

Real ədədlərin giriş/çıxışı:

Scanner in=new Scanner(System.in);
in.useLocale(new Locale("US"));
double x=in.nextDouble();
System.out.printf(Locale.US,"%.2f\n",x);
Java dilində proqramin reallaşdırılması (giriş/çixış fayllardan)
import java.util.*;
import java.io.*;

public class main
{
   public static void main(String[] argv) throws IOException
   {
      new main().run();
   }
   PrintWriter pw;
   Scanner sc;
   public void run() throws IOException
   {
      sc = new Scanner(new File("input.txt"));
      int a=sc.nextInt();
      pw = new PrintWriter(new File("output.txt"));
      pw.print(a/10+" "+a%10);
      pw.close();
   }
}
Pascal dilində proqramin reallaşdırılması (giriş/çixış konsoldan)
var 
   a:integer;
begin 
   read(a);
   writeln(a div 10,' ',a mod 10); 
end.
Pascal dilində proqramin reallaşdırılması (giriş/çixış fayllardan)
var 
   a,b:integer; 
   fin,fout:text; 
begin 
   assign(fin, 'input.txt'); 
   assign(fout, 'output.txt'); 
   reset(fin); 
   rewrite(fout); 
   read(fin,a); 
   writeln(fout, a div 10,' ', a mod 10); 
   close(fin); 
   close(fout); 
end.

Çevik proqram kodu olan məsələlər

Bu məsələlərin fərqi ondan ibarətdir ki, sadə giriş/çıxış olmagla burda hətta proqram kodu da test ola bilər, məsələn, funksiya, klass, prosedur və s. İki düyünlü Gaus dördünü məsələsini nümunə qətirərək onun reallaşmasına nəzər salaq.

C/C++ dilində proqramin reallaşdırılması

Proqramda double studyprog(double) prototipli funksiyani qeyd etmək, və ona ünvanlanmaq lazımdır. Bu funksiyanı kodda yazmaq lazım deyil.

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

double studyprog(double);
int main(void) 
{
    double c;
    c=0.5*studyprog(0.5*(1.0-1.0/sqrt(3.0)))+0.5*studyprog(0.5*(1.0+1.0/sqrt(3.0)));
    printf("%.12lf\n",c);
    return 0;
}
Java dilində proqramin reallaşdırılması

Burda isə double test.studyprog(double) protoripli klass metoduna ünvanlanmaq lazımdır.

import java.io.*;
import java.util.*;
class main 
{ 
    public static void main(String[] args) 
	{  
        Locale.setDefault(Locale.ENGLISH);
        Scanner in = new Scanner(System.in);
        PrintWriter out = new PrintWriter(System.out);   
        double c;
        c=0.5*test.studyprog(0.5*(1.0-1.0/Math.sqrt(3.0)))+0.5*test.studyprog(0.5*(1.0+1.0/Math.sqrt(3.0)));
        out.format("%.12f",c);
        out.flush();
    }
}

Riyazi məsələlər

Bu kateqoriya çoxlu məsələlərdən ibarətdir. Məsələn, Variyasiya hesablanmasının asan məsələsi (1) məsələsində, məsələnin həlli olan $x(t)$ funksiyasını tapmaqdan və proqramlaşdırmaqdan ibarətdir. Studyprog sistemi bu funksiyanin düzgünlüyünü sayca yoxlayır. Ona görə giriş parametri $t$ olaraq, $x(t)$ funksiyasini bu nöqtədə tapmaq lazımdır. Bu məsələnin həlli $x(t)=t$. Ona görədə aşağıdaki koda uygun bir həll göndərmək lazımdır:

#include <stdio.h>
#include <math.h>
int main(void) 
{
    double t;
    scanf("%lg",&t);
    printf("%.14lf\n",t);
    return 0;
}

Amma Siz bu gədər kodu yazmaqdan ötrü Studyprog Math: Float Judge kompilyatorundan istifadə edə bilərsiniz. Bu kompilyator Studyprog şirkəti tərəfindən yaradılıb. Onda həlli C formatına uygun bir sətirdə yazmaq lazımdır. Vurma işarəsini (məsələn, $2t$ və $tsin(t)$ səhvdir, onların yerinə 2*tt*sin(t)), kəsir 1/3 səhvdir (bu yazılardan istifadə etmək lazımdır: 1/3.0, 1.0/3, 1.0/3.0), math.h kitabxanasindan funksiyalar və rəqəmlər istifadə etmək olar, aşağida onlarin bəziləri göstərilir:

  1. sinus — sin(t)
  2. kosinus — cos(t)
  3. tanqens — tan(t)
  4. kök — sqrt(t)
  5. t p dərəcəsində — pow(t,p)
  6. eksponent — exp(t)
  7. natural loqarifm — log(t)
  8. giperbolik sinus — sinh(t)
  9. giperbolik kosinus — cosh(t)
  10. giperbolik tangens — tanh(t)
  11. e — M_E
  12. π — M_PI
DİQQƏT! Parametr şərtdə göstəriln həriflə yazilmalıdır.