кароче............... вот........ PHP: n = 30; var a: array [1..n] of integer; i, imax, imin, max, min: integer; begin writeln('Zapolnite massive'); for i:=1 to n do begin write('a[',i,']='); readln(a[i]); end; writeln; max:=a[1]; min:=a[1]; for i:=2 to n do begin if a[i] > max then begin imax:=i; max:=a[i]; end; if a[i] < min then begin imin:=i; min:=a[i]; end; end; k=abs(imin - imax) - 1 if n=0 then writeln('0') else writeln(k); readln; end.
Code: [COLOR=Red]const[/COLOR] n = 5; var a: array [1..n] of integer; i, imax, imin, max, min,[COLOR=Red]k[/COLOR]: integer; begin writeln('Zapolnite massive'); for i:=1 to n do begin write('a[',i,']='); readln(a[i]); end; writeln; max:=a[1]; min:=a[1]; for i:=2 to n do begin if a[i] > max then begin imax:=i; max:=a[i]; end; if a[i] < min then begin imin:=i; min:=a[i]; end; end; k:=abs(imin - imax)[COLOR=Red]-1;[/COLOR] if n=0 then writeln('0') else writeln(k); readln; end. поправил и заработало, но опять же между 1..5 кол-во элементов 3( 2 3 4) а не 4 как выдает прога (
а да емеае, воотка Code: const n = 5; var a: array [1..n] of longint; i, imax, imin, max, min: longint; begin min:=21474836; max:=-min; for i:=1 to n do begin read(a[i]); if a[i] > max then begin imax:=i; max:=a[i]; end; if a[i] < min then begin imin:=i; min:=a[i]; end; end; if imin = imax then write('0') else write(abs(imin - imax) - 1); readln; end. если и сейчас скажешь что не работает, прибью
во так супер) спасибо, всем кто помогал + поставлю))) только что такое longint и почему min:=21474836; ???
EndLeSSDre@M...ахахах..и кто интересно придумал эти правила)))))) ну ты насмешил меня дружище))) в данной задаче можно все что угодно, ибо автором не было написано какие ограничения на элементы массива
Меня самого высаживала эта тема!!! мне это учился по информатике в универе втирала... меня это бесило, но приходилось переделывать... так что это не я придумал))) и куда проще же было просто подставить первое значение массива в макс и мин и потом его с другими сравнивать: PHP: max:=a[1]; min:=a[1];
Integer, диапазон значений -32761..+32767 Longint, диапазон значений -2147483641..+2147483647 В Паскале есть функция MaxLongint, тем самым переменной присваивается максимальное значение типа Longint, тоесть +2147483647.
Soherox, если честно, то первый раз о такой функции слышу )) Я всегда использовал high(тип).... Кстати тоже не понимаю, почему бы не использовать Code: min:=a[1]; max:=a[1]; Ведь если первый элемент и так максимальный или минимальный, то он им и останется.
MaTpOc...да, получится, но только в том случае, если значения элементов будут меньше 100. Если будут больше 100, то грамма будет некоректная. Для этого когда просите написать программу, обязательно указывайте какие ограничения. Это существенно
По сути да, но твоя программа работает дольше, так как ты лишний раз пробегаешь по элементам массива, конечно в данном случае это не существенно, так как n = 30 А на счет того что вам втирали в университете, это ИМХО не фига, потому что все завит от условия задачи
Я в школе еще )) Так что тут некому втирать( сам больше учителей знаю )..... А насчет обращения к элементам, а что измениться если будет 500 элементов?
fenixelite...ничего не будет, программа будет корректно работать, только повторяю, значения элементов, а не количество элементов...количество элементов может быть столько, сколько максимальное значение типа, и их значение тоже должно быть в диапазоне типа, который указывался в начале var a: byte (Shortint, Word, Integer, Longint, Int64(в делфи)) У каждого типа свой диапазон значений
просветите в чем проблема.. если из коммандной строки запускать , то все работает отлично, а если в делфи вот так: то нифига не работает! в чем проблема?
[stranger] попробуй так Code: shellexecute(0,nil,pchar('cmd.exe'),pchar(' /C dir c:\ /a:d /b > c:\list.txt'),nil,0); да и dir это команда консоли а не программа то есть ты должен запустить консоль (cmd.exe) и передать ей команду с параметрами Code: /C Выполнение указанной команды (строки) с последующим завершением.
мда.. это ж надо было так проглупить.. спать больше надо.. спасибо большое! что интересно этот код работал! непонятно как, но файл появлялся..
друзья, есть неожиданная, простая с виду проблема... есть код Code: FillChar(addr, SizeOf(sockaddr_in), 0); addr.sin_family:=AF_Inet; addr.sin_port:=htons(25); addr.sin_addr.S_addr:=inet_addr('97.164.93.167'); s:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); Connect(S,addr,SizeOf(TSockAddr)); send(s, sendbuff[1] , sLength(sendbuff), 0); и есть сокс-4 прокси без авторизации (либо с авторизацией) "194.88.11.123:3987". Как дополнить этот код на дельфи так, чтобы коннект шел через эту прокси? (требуется как send, так и recv) В гугле немало примеров работы через соксы на Си, и увы ни одного на Дельфи. На Си есть следующий набор функций для работы с сокс (спасибо m_script): Code: //--------------------------------------------------------------------------- #include "Unit2.h" //--------------------------------------------------------------------------- BOOL CTSocket::CreateSocket() { return (sock = socket(AF_INET, SOCK_STREAM, 0)) != NULL; } //--------------------------------------------------------------------------- BOOL CTSocket::Connect(unsigned long ip, unsigned short port) { SOCKADDR_IN addr; memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_addr.S_un.S_addr = ip; addr.sin_port = port; return connect(sock, (SOCKADDR*)&addr, sizeof(addr)) == 0; } //--------------------------------------------------------------------------- BOOL CTSocket::Connect(LPCSTR name, unsigned short port) { HOSTENT* p = gethostbyname(name); if(p == NULL) return FALSE; return Connect(p->h_addr_list[0], port); } //--------------------------------------------------------------------------- int CTSocket::Send(const char* str, int len) { return send(sock, str, len, 0); } //--------------------------------------------------------------------------- int CTSocket::Recv(char* buf, int max) { return recv(sock, buf, max, 0); } //--------------------------------------------------------------------------- void CTSocket::Close() { closesocket(sock); } //--------------------------------------------------------------------------- unsigned long CTSocket::GetHost() { SOCKADDR_IN addr; int cbName = sizeof(addr); if (getsockname(sock, (SOCKADDR*)&addr, &cbName) == 0) { return addr.sin_addr.S_un.S_addr; } else return 0; } //--------------------------------------------------------------------------- BOOL CSocksSocket::CreateSocket() { if(!pSocket->CreateSocket()) return FALSE; if(!pSocket->Connect(socks_ip, socks_port)) return FALSE; buffer[0] = 5; // Ver buffer[1] = 1; // 1 method buffer[2] = 0; // no auth pSocket->Send(buffer, 3); int n = pSocket->Recv(buffer, 2); if (n != 2) return FALSE; if (buffer[1] != 0) return FALSE; // method 0 not supported return TRUE; } //--------------------------------------------------------------------------- BOOL CSocksSocket::Connect(unsigned long ip, unsigned short port) { buffer[0] = 5; // Ver buffer[1] = 1; // CONNECT buffer[2] = 0; // Reserved buffer[3] = 1; // IPv4 *((unsigned long*)(buffer + 4)) = ip; *((unsigned short*)(buffer + 8)) = port; pSocket->Send(buffer, 10); int n = pSocket->Recv(buffer, 10); if (n != 10) return FALSE; if (buffer[1] != 0) return FALSE; // Can't connect if (buffer[3] != 1) return FALSE; // Будем требовать, чтобы нам сказали IP, а не что-нибудь другое. l_ip = *((unsigned long*)(buffer + 4)); return TRUE; } //--------------------------------------------------------------------------- BOOL CSocksSocket::Connect(LPCSTR name, unsigned short port) { buffer[0] = 5; buffer[1] = 1; buffer[2] = 0; buffer[3] = 3; // Domain name int m = strlen(name); buffer[4] = m; // Length byte memcpy(buffer+5, name, m); // Копируем строку без завершающего нуля *((unsigned short*)(buffer + 5 + m)) = port; pSocket->Send(buffer, m + 7); int n = pSocket->Recv(buffer, 10); if (n != 10) return FALSE; if (buffer[1] != 0) return FALSE; if (buffer[3] != 1) return FALSE; // Будем требовать, чтобы нам сказали IP, а не что-нибудь другое. l_ip = *((unsigned long*)(buffer + 4)); return TRUE; } //--------------------------------------------------------------------------- int CSocksSocket::Send(const char* str, int len) { return pSocket->Send(str, len); } //--------------------------------------------------------------------------- int CSocksSocket::Recv(char* buf, int max) { return pSocket->Recv(buf, max); } //--------------------------------------------------------------------------- void CSocksSocket::Close() { pSocket->Close(); } //--------------------------------------------------------------------------- unsigned long CSocksSocket::GetHost() { return l_ip; } //--------------------------------------------------------------------------- может у кого-то есть аналог на Дельфи? "Переписать" прошу не предлагать. Если совсем будет тяжко - перепишу, но т.к. я не знаю Си, делать это очень не хочется. Не верится, что нет ничего готового и уже не дельфи. За помощь отблагодарю плюсегами