LinuxForum.Fans
Тема

Программа на FPC

Автор: XliN 10 сообщений 2776 просмотров
#105210

Мужики помогите. smile Бьюсь весь день и не могу написать эту чертову программу. Все лабы сделал, а эту не могу.

Задание:
Вводится последовательность вещественных чисел. Признак конца ввода – 0. Определить является ли последовательность арифметической прогрессией

Башка не варит совсем, а если быть точнее математика хромает.

UPD: Если кините меня кодом, то буду благодарен по гроб ))) :D

#105220
text
#include <math.h>
#include <conio.h>
 
int main(void)
{int i,j,a[20],b,n,t,c,k;
clrscr();
printf("vvedite kol-vo elementov\n");
scanf("%d",&n);
if(n!=0)
 {for(i=0; i<n; i++)
   {printf("vvedite zna4enie %d-go elementa massiva\n",i+1);
    scanf("%d",&a[i]);
    }
   for(i=0; i<(n-1); i++)
      for(j=i+1; j<n; j++)
       if(a[i]>a[j])
        {b=a[i];
       a[i]=a[j];
       a[j]=b;
        }
}
clrscr();
  printf("uporuadochenniy massiv\n");
  for(i=0; i<n; i++)
   {printf("a[%d]=%d\n",i+1,a[i]);}
  t=a[1]-a[0]; //Здесь было t=a[i+1]-a[i];
    if (t==0)
   printf("raznost progresii ne mozget bit ravna 0\n");
  else
   {k=0;
   for(i=0;i<(n-1);i++)
   {c=a[i+1]-a[i];
     if(c==t)
       k++;}
     }
        printf("\n%d %d\n",k,t);
  if (k==(n-1)) //Здесь было   if (k=(n-1))
   printf("massiv iavlaetsa arifmeticheskoi progresiei\n"
         "raznost progresii ravna %d \n",t); //Здесь было printf("massiv iavlaetsa arifmeticheskoi progresiei\n",&t);
else
  printf("massiv ne iavlaetsa arifmeticheskoi progresiei\n");
 
getch();
}
#105263

Hvzh, Пока не знаю, попробую ее на паскаль перевемти ))
odin, С этого я начинал )) И уже не утро )) Может напишешь?

#105271

как то так...

text
#include <iostream>
#include <vector>
using namespace std;

int main() {

vector<double> array; double i,d;

while(1){ cout<<"Next number:"; cin>>i; if(i==0) break; array.push_back(i); }

for(int j=1;j<array.size();j++) { double current; current=array[j]-array[j-1]; if(j>1&&current!=d){ cout<<"false"; break; } d=current; } return 0; }

#105344

Всем спасибо )) С сишным кодом не разобрался, он не привычный. Не дружу с ним.
Программу написал. Выложу, может еще есть студенты :D Программа писана для кореша, я слава богу уже свое отучился. ))

Показать
text
uses
   Crt;
var
   a : array [1..100] of real;
   i, N : integer;
   d : real;
   prog : boolean;
   y : real;
Begin
   ClrScr;
   prog:=False;
   Write('Введите шаг: ');
   ReadLn(d);
   i:=1;
   Repeat
   begin
        Write('Элемент № ',i, ' ');
        ReadLn(a[i]);
        if a[i]=0 then
        begin
            N:=i-1;
            prog:=true;
        end;
        inc(i);
   end
   Until prog=true;
   For i:=1 to N do
   begin
        y:=a[1]+(i-1)*d;
        if y<>a[i] then //prog:=True
        begin
            WriteLn('Fuck OFF!!');
            Readln;
            Exit;
        end;
    end;
   WriteLn('Это прогрессия!');
   ReadLn;
End

.

#105595

Хм, а зачем вообще заполнять-обегать массив? Можно просто в цикле запрашивать у пользователя очередной элемент, вычитать из него предыдущий (его запоминаем) и сравнивать эту разность с такой же, полученной на предыдущей итерации (соот-но, тоже надо запоминать). Если разность изменилась, значит прогрессией последовательность не является. В итоге экономим память и время пользователя: можно не дожидаться ввода всей последовательности, если прогрессии уже не получается.

#105596

+100...


ЗЫ по этому и не люблю код с утра писать... :)

#105627

А вот следующее задание я не осилил. Пришлось брата просить. smile Нужно было ввести две последовательности, отсортировать их по убыванию и вывести на экран только те элементы массива, которые не повторяются.

Вот код:

Показать
text

program ProgForBeer_MoreBeerAndGirls;
uses
  crt;
var
  m : array[1..100] of integer; // first array
  m2: array[1..100] of integer; // second array
  m3: array[1..200] of integer; // last main array (1+2)
  i,j,n,buf,BigN,Sett,k : integer; // index,addindex,MaxNumElems,buffer
                            // MaxNumElemsM3, MatchVariable
begin
ClrScr; // Clear the display view buffer
write('Enter maximal number of elements for the first and second array: ');
readln(n);
Write('You has two ',n,' elements array. Press ENTER...');
ReadLn;

for i:=1 to n do // enter n array "m[i]" begin write('Enter element as index m[',i,' of ',n,'] : '); readln(m[i]) end;

for i:=1 to n-1 do // sort array m[i] elements for j:=i+1 to n do if m[i]<m[j] then begin buf:=m[i]; m[i]:=m[j]; m[j]:=buf; end; WriteLn('Array M[i] was countdown sorted...'); for i:=1 to n do write(m[i],' '); Readln;

Write('Now, you must enter ',n,' elements of the second array. Press ENTER...'); ReadLn; for i:=1 to n do // enter n array "m2[i]" begin write('Enter element as index m2[',i,' of ',n,'] : '); readln(m2[i]) end;

for i:=1 to n-1 do // sort array m2[i] elements for j:=i+1 to n do if m2[i]<m2[j] then begin buf:=m2[i]; m2[i]:=m2[j]; m2[j]:=buf; end; WriteLn('Array M2[i] was countdown sorted...'); for i:=1 to n do write(m2[i],' '); Readln;

BigN:=N*2; // get number of main array elements For i:=1 to N do // generate first part of array cycle m3[i]:=m[i]; For i:=1 to N do // generate second part of array cycle m3[i+n]:=m2[i]; Write('The program was generate main array. Press ENTER...'); ReadLn; for i:=1 to BigN do write(m3[i],' '); WriteLn; Write('Now start process of checking the matches. Press ENTER...'); Readln;

For i:=1 to BigN do // Checking the matches begin Buf:=m3[i]; Sett:=0; For j:=1 to BigN do // main cycle if m3[j]=Buf then // detect match index begin Inc(Sett); if Sett>1 then // detect match element for k:=1 to BigN do if m3[k]=Buf then begin if m3[k]<>-32000 then WriteLn('Element number ',k,' as BAD! (',m3[k],')'); m3[k]:=-32000;//delete match element (set max type resourse) end; end; end;

for i:=1 to BigN-1 do // sort array m3[i] elements for j:=i+1 to BigN do if m3[i]<m3[j] then begin buf:=m3[i]; m3[i]:=m3[j]; m3[j]:=buf; end; WriteLn('Program was delete from array M3[i] matched elements,'); WriteLn('and procedured the countdown operation...'); for i:=1 to BigN do if m3[i]<>-32000 then write(m3[i],' '); WriteLn; WriteLn; TextColor(Yellow); Sound(700); WriteLn('08.12.2010 Manif'); Delay(5000); NoSound; Readln; TextColor(White); End.

И вот это заставляют писать заочников на факультете ИТ первого курса. :D

Войдите или зарегистрируйтесь, чтобы ответить.