Pascal ABC - среда разработки;
var
a, b, c, d: real;
begin
read(a, b, c);
d := (power(b, 2) - 4 * a * c);
if d > 0 then
begin
writeln('x1 = ', (-b + sqrt(d)) / (2 * a));
writeln('x2 = ', (-b - sqrt(d)) / (2 * a));
halt
end;
if d = 0 then writeln('x = ', (-b) / (2 * a))
else writeln('Корней нет')
end.
program z1;
var i,n,s:integer;
a : array [1..100] of integer;
begin
write ('Введите количество элементов n < 100: ');
readln(n);
write ('Массив: ');
for i:= 1 to n do
begin
a[i]:=random (21)-10;
write(a[i]:5)
end;
writeln;
s:=0;
for i:= 1 to n do
if a[i]<0 then s:=s+a[i];
writeln ('s = ',s)
end.
Объяснение:
Ошибки
1) нет названия программы и ; после неё
2) в описании массива 3 точки (надо 2)
3) нет кавычек для ввода текста в первом write
4) нет ; после readln (n)
5) нет : при присваивании i в цикле for i = 1
6) нет форматированного вывода или добавленного разделителя в write(a[i])
7) нет ; после первого end
8) нет ; после s:=0
9) нет кавычек для ввода текста в writeln (s = ,s)
10) нет точки после последнего end
Условие
for i:= 1 to n do (перебираем весь массив)
if a[i]<0 then s:=s+a[i]; (если элемент меньше 0, то увеличиваем переменную s (сумму) на него)
Если не ошебаюсь то так ) Дан массив размера N. Найти номера тех элементов массива, которые больше своего правого соседа,
и количество таких элементов. Найденные номера выводить в порядке их возрастания.
var a,d:array[1..255]of integer;
i,c,n:byte;
begin
write('n=');
read(n);
for i:=1 to n do
begin
write('a[',i,']=');
read(a)
end;
writeln;
c:=0;
for i:=1 to n-1 do
if a>a[i+1] then
begin
c:=c+1;
d[c]:=i
end;
writeln('TaKuX EJIEMEHTOB:',c);
for i:=1 to c do write(d,' ');
writeln
end.
2) Дан целочисленный массив A размера N,являющийся перестановкой.
Найти количество инверсий в данной перестановке,т.е. таких пар Ai И Aj элементов
в которых большее число находится слева от меньшего:Ai>Aj при i<j>L) и целочисленный массив размера N.
Заменить каждую серию массива, длина которой меньше L, на один элемент с нулевым значением.
Что-то я не понял, что это за Л? Вот решил так:
var a:array[1..256]of integer;
i,j,n:byte;
c:integer;
begin
write('n=');
read(n);
for i:=1 to n do
begin
write('a[',i,']=');
read(a)
end;
writeln;
c:=0;
for i:=1 to n-1 do
for j:=i+1 to n do
if a>a[j] then inc(c);
writeln('Колличество инверсий - ',c);
end.
Ввести числа через Enter.
Объяснение:
Dev C++
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <locale>
int main(int argc, char** argv) {
int a, b, c, y, r, h;
setlocale(LC_ALL, "rus");
double x1, x2, d;
printf("a * x^2 + b * x + c = 0\n");
printf("Ââåäèòå a = ");
scanf("%d", &a);
printf("Ââåäèòå b = ");
scanf("%d", &b);
printf("Ââåäèòå c = ");
scanf("%d", &c);
d = pow(b,2) - 4 * a * c;
printf("D = %f\n", d);
y = sqrt(d);
h = -b;
r = 2 * a;
if (d > 0){
x1 = ((h + y) / r);
x2 = ((h - y) / r);
printf("Êîðíè : \nx1 = %f,\nx2 = %f", x1, x2);
}
if (d == 0){
x1 = (h / r);
x1 = x2;
printf("Êîðíè : \nx1 = %f,\nx2 = %f", x1, x2);
}
if (d < 0) printf("False");
return 0;
}