Pascal/Turbo Pascal - ayuda con ejercicio

 
Vista:

ayuda con ejercicio

Publicado por mariana (1 intervención) el 02/09/2008 03:30:20
hola tengo una pregunta....tengo q ingresar constantes q son numeros enormes...como por ejemplo m= 1*E30....como hago para declarar numeros tan grandes?....hay alguna forma de ponerlo asi o voy a tener q poner m= 10000000000?.....desde ya gracias....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ayuda con ejercicio

Publicado por adalberto (17 intervenciones) el 02/09/2008 05:22:15
while (1) {

clientAddrSize = sizeof(struct sockaddr_in);

do

sock = accept(serverSocket,

(struct sockaddr*) &clientAddr,

&clientAddrSize);

while ((sock == -1) && (errno == EINTR));

if (sock == -1) {

printf(“Bad accept ”);

exit(1);

}


entity = gethostbyaddr((char*) &clientAddr.sin_addr,

sizeof(struct in_addr), AF_INET);

if (DEBUG) printf(“Connection from %d ”,

inet_ntoa((struct in_addr) clientAddr.sin_addr));


i = recv(sock, recvBuffer, 4000, 0);


if (i == -1) break;

if (recvBuffer[i - 1] != ‘ ’) break;

recvBuffer[i] = ‘’;

if (DEBUG) {

printf(“Received from client: %s ”, recvBuffer);

}


// call a separate work function to process request:

cbuf = read_file(recvBuffer, totalReceived);

size = strlen(cbuf);

totalSent = 0;

do {
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con ejercicio

Publicado por adalberto (17 intervenciones) el 02/09/2008 05:26:20
bytesSent = send(sock, cbuf + totalSent,

strlen(cbuf + totalSent), 0);

if (bytesSent == -1) break;

totalSent += bytesSent;

} while (totalSent < size);

if (DEBUG) printf(“Connection closed by client. ”);

close(sock);

}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con ejercicio

Publicado por debug (17 intervenciones) el 02/09/2008 05:35:35
char ret_buf[32768];

char * error_return = “<HTML> <BODY>File not found </BODY> </HTML>”;


char * read_file(char * buf, int num_buf) {

int i;

char *cp, *cp2;

FILE *f;

cp = buf + 5;

cp2 = strstr(cp, “ HTTP”);

if (cp2 != NULL) *cp2 = ‘’;

if (DEBUG) printf(“file: |%s| ”, cp);

// fetch file:

f = fopen(cp, “r”);

if (f == NULL) return error_return;

i = fread(ret_buf, 1, 32768, f);

if (DEBUG) printf(“%d bytes read from file %s ”, i, cp);

if (i == 0) { fclose(f); return error_return; }

ret_buf[i] = ‘’;

fclose(s);

return ret_buf;

}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con ejercicio

Publicado por adalberto (17 intervenciones) el 02/09/2008 05:58:09
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/wait.h>
#include <signal.h>
#define MYPORT 3490 /* Puerto de escucha */
#define BACKLOG 10 /* Cantidad de conexiones máximas permit.*/
#define MAX 512 /*tamaño máximo del buff de lectura de archivo*/

int enviototal(int s, char buffer[],int *len);
int recibtotal(int s, char buffer[],int *len);

int main( ){

int sockfd, new_fd;
/* Escuchar sobre sock_fd, nuevas conexiones sobre new_fd*/
struct sockaddr_in dir_local; /*información sobre mi dirección*/
struct sockaddr_in dir_entrante;
/* información sobre la dirección del cliente*/
int yes=1,bytesrec,sin_size;
FILE* archivo;
char nomarch[40],carpeta[40],dir[100],httpmsj[100],
http200[ ]="HTTP 200:FILE FOUND",
http404[ ]="HTTP404:FILE NOT FOUND";
char *parse,*p;
int len,bytesleidos;
char buffer[512],bufferaux[512];

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror("socket");
exit (1);
}


if (setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&yes,
sizeof(int)) == -1)
{
perror("setsockopt");
exit (1);
}


dir_local.sin_family = AF_INET;
// Ordenación de bytes de la máquina
dir_local.sin_port = htons(MYPORT);
// short, Ordenación de bytes de la red
dir_local.sin_addr.s_addr = htonl(INADDR_ANY);
// Rellenar con mi dirección IP
memset(&(dir_local.sin_zero), '', 8);
// Poner a cero el resto de la estructura

if (bind(sockfd, (struct sockaddr *)&dir_local,
sizeof (struct sockaddr))== -1)
{
perror("bind");
exit(1);
}

if (listen(sockfd, BACKLOG) == -1)
{
perror("listen");
exit(1);
}


while(1) {

sin_size =sizeof(struct sockaddr_in);

if ((new_fd = accept(sockfd,
(struct sockaddr *) &dir_entrante,&sin_size)) == -1)
{
perror("accept");
continue;
}




/*recibe nombre del archivo y se extrae del mensaje GET
el nombre para intentar la apertura*/


if ((bytesrecib=recv(new_fd, httpmsj, sizeof(httpmsj), 0)) == -1)
/*recibe mensaje get*/

{
perror("recv");
exit(1);
}


len=strlen(buffer);/*verificar si esta bien*/
while((bytesrecib>0)

{
if((bytesrecib=enviototal(new_fd,buffer,
&len))==-1)
/* asegura que se reciba la totalidad del buffer*/
{ perror("enviototal");

printf("Se recibieron %d bytes a causa del error ",len);
}


}/*fin while*/


if(((p=strstr(httpmsj,"r/n/r/n"))!=NULL)||
((p=strstr(httpmsj,"/n/n"))!=NULL))

{

parse=strtok(httpmsj,"/");

parse=strtok(NULL," ");


strcpy(nomarch,parse);


}





/*se arma la ruta de acceso*/


strcpy(carpeta,"/etc/");

sprintf(dir,("%s%s"),carpeta,nomarch);


/*apertura de archivo*/


archivo=fopen(dir,"rt");

/*se procede a mandar los mensajes http correspondientes e iniciar la transferencia*/



if(archivo)
{


len=strlen(http200);
if(enviototal(new_fd,http200,&len)==-1)
/*se asegura de que llegue la totalidad del mensaje HTTP 200*/
{ perror("enviototal");
printf("Se enviaron %d bytes a causa del error ",len);
}


len=strlen(buffer);
while((bytesleidos=fread(buffer,sizeof(buffer),1,archivo))!=0)

{
if(enviototal(new_fd,buffer,
&len)==-1)
/* asegura que llegue la totalidad del buffer*/
{ perror("enviototal");

printf("Se enviaron %d bytes a causa del error ",len);
}


}/*fin while*/






} /*fin then*/


else

{

len=strlen(http404);
if(enviototal(new_fd,http404,&len)==-1)
/*asegura que llegue la totalidad del mensaje HTTP 404*/
{ perror("enviototal");

printf("Se enviaron %d bytes a causa del error ",len);
}



} /*fin else*/


//cerrar el socket temporal
close(new_fd);

}

close(sockfd);

return 0;

}


int enviototal(int s, char buffer[],int *len)
{
int total=0; /*cuantos bytes se enviaron*/
int restantes=*len; /*cuantos bytes quedan en el buffer*/
int n;
while (total<*len) {
n=send(s,buffer+total,restantes,0);
if(n==-1) {break;}
total+=n;
restantes-=n;
} /*fin while*/

*len=total; /*devuelve la cantidad enviada*/
return (n=-1?-1:0); /*devuelve -1 si falla, 0 en cualquier otro caso*/
}

int recibtotal(int s, char buffer[],int *len)
{
int total=0; /*cuantos bytes se recibieron*/
int restantes=*len; /*cuantos bytes hay en el buffer*/
int n;
while (total<*len) {
n=recv(s,buffer+total,restantes,0);
if(n==-1) {break;}
total+=n;
restantes-=n;
} /*fin while*/

*len=total; /*devuelve la cantidad recibida*/
return (n=-1?-1:0); /*devuelve -1 si falla, 0 en cualquier otro caso*/
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con ejercicio

Publicado por adalberto (17 intervenciones) el 02/09/2008 06:31:39
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/wait.h>
#include <signal.h>
#define MYPORT 3490 /* Puerto de escucha */
#define BACKLOG 10 /* Cantidad de conexiones máximas permit.*/
#define MAX 512 /*tamaño máximo del buff de lectura de archivo*/

int enviototal(int s, char buffer[],int *len);
int recibtotal(int s, char buffer[],int *len);

int main( ){

int sockfd, new_fd;
/* Escuchar sobre sock_fd, nuevas conexiones sobre new_fd*/
struct sockaddr_in dir_local; /*información sobre mi dirección*/
struct sockaddr_in dir_entrante;
/* información sobre la dirección del cliente*/
int yes=1,bytesrec,sin_size;
FILE* archivo;
char nomarch[40],carpeta[40],dir[100],httpmsj[512],
http200[ ]="HTTP 200:FILE FOUND",
http404[ ]="HTTP404:FILE NOT FOUND";
char *parse,*p;
int len,bytesleidos;
char buffer[512];
int total;

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror("socket");
exit (1);
}

if (setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&yes,
sizeof(int)) == -1)
{
perror("setsockopt");
exit (1);
}

dir_local.sin_family = AF_INET;
// Ordenación de bytes de la máquina
dir_local.sin_port = htons(MYPORT);
// short, Ordenación de bytes de la red
dir_local.sin_addr.s_addr = htonl(INADDR_ANY);
// Rellenar con mi dirección IP
memset(&(dir_local.sin_zero),0, 8);
// Poner a cero el resto de la estructura

if (bind(sockfd, (struct sockaddr *)&dir_local,
sizeof (struct sockaddr))== -1)
{
perror("bind");
exit(1);
}

if (listen(sockfd, BACKLOG) == -1)
{
perror("listen");
exit(1);
}

while(1) {

sin_size =sizeof(struct sockaddr_in);

if ((new_fd = accept(sockfd,
(struct sockaddr *) &dir_entrante,&sin_size)) == -1)
{
perror("accept");
continue;
}


/*recibe nombre del archivo y se extrae del mensaje GET
el nombre para intentar la apertura*/

bytesrec=recv(new_fd,httpmsj,MAX-1,0);
total=bytesrec;
httpmsj[bytesrec]='';
while ((ptr=strstr(httpmsj," ") )== NULL)
{

bytesrec=recv(new_fd,&httpmsj[total],MAX-1-total,0);
total+=bytesrec;
httpmsj[total]='';

}

if(((p=strstr(httpmsj,"r/n/r/n"))!=NULL)||
((p=strstr(httpmsj,"/n/n"))!=NULL))

{

parse=strtok(httpmsj,"/");

parse=strtok(NULL," ");

strcpy(nomarch,parse);

}



/*se arma la ruta de acceso*/

strcpy(carpeta,"/etc/");

sprintf(dir,("%s%s"),carpeta,nomarch);

/*apertura de archivo*/

archivo=fopen(dir,"rt");

/*se procede a mandar los mensajes http correspondientes e iniciar la transferencia*/


if(archivo)
{

len=strlen(http200);
if(enviototal(new_fd,http200,&len)==-1)
/*se asegura de que llegue la totalidad del mensaje HTTP 200*/
{ perror("enviototal");
printf("Se enviaron %d bytes a causa del error ",len);
}

len=strlen(buffer);
while((bytesleidos=fread(buffer,sizeof(buffer),1,archivo))!=0)

{
if(enviototal(new_fd,buffer,
&len)==-1)
/* asegura que llegue la totalidad del buffer*/
{ perror("enviototal");

printf("Se enviaron %d bytes a causa del error ",len);
}

}/*fin while*/



} /*fin then*/

else

{

len=strlen(http404);
if(enviototal(new_fd,http404,&len)==-1)
/*asegura que llegue la totalidad del mensaje HTTP 404*/
{ perror("enviototal");

printf("Se enviaron %d bytes a causa del error ",len);
}


} /*fin else*/

//cerrar el socket temporal
close(new_fd);

}

close(sockfd);

return 0;

}

int enviototal(int s, char buffer[],int *len)
{
int total=0; /*cuantos bytes se enviaron*/
int restantes=*len; /*cuantos bytes quedan en el buffer*/
int n;
while (total<*len) {
n=send(s,buffer+total,restantes,0);
if(n==-1) {break;}
total+=n;
restantes-=n;
} /*fin while*/

*len=total; /*devuelve la cantidad enviada*/
return (n=-1?-1:0); /*devuelve -1 si falla, 0 en cualquier otro caso*/
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ayuda con ejercicio

Publicado por adrian (8 intervenciones) el 03/09/2008 07:12:16
no se hacer este problema haber si alguien me dice como hacer el codigo:

leer una lista de 10 personas (nombre, sexo y salario) utilizando 3 vectores.
a) listar sexo del mas joven y del mayor
b)listar aquellos nombres q cobren mas de $500
c)listar el nombre de todas las mujeres.
d)calcular y mostrar el promedio del salario de todas las personas.
el programa debe tener un menu con la opcion para cada isiso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con ejercicio

Publicado por adrian (8 intervenciones) el 03/09/2008 07:12:49
no se hacer este problema haber si alguien me dice como hacer el codigo:

leer una lista de 10 personas (nombre, sexo y salario) utilizando 3 vectores.
a) listar sexo del mas joven y del mayor
b)listar aquellos nombres q cobren mas de $500
c)listar el nombre de todas las mujeres.
d)calcular y mostrar el promedio del salario de todas las personas.
el programa debe tener un menu con la opcion para cada isiso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con ejercicio

Publicado por adasd (8 intervenciones) el 03/09/2008 07:15:01
no se hacer este problema haber si alguien me dice como hacer el codigo:

leer una lista de 10 personas (nombre, sexo y salario) utilizando 3 vectores.
a) listar sexo del mas joven y del mayor
b)listar aquellos nombres q cobren mas de $500
c)listar el nombre de todas las mujeres.
d)calcular y mostrar el promedio del salario de todas las personas.
el programa debe tener un menu con la opcion para cada isiso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con ejercicio

Publicado por lupita (1 intervención) el 12/12/2008 02:09:46
calcular el salario de una persona y la pension si la persona es mayor a 65 años y si es mujer y es solterase le da 300 y por ser hombre 100
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con ejercicio

Publicado por Diego Romero (996 intervenciones) el 02/09/2008 17:22:44
El tipo más grande en Pascal es extended pero no alcanza para un número como 1E30 (es un uno seguido de 30 ceros). En definitiva, no hay forma de operar con números tan grandes directamente. Tendrás que pasarte a aritmética decimal usando strings.

Me asalta la duda, ¿para qué necesitas números tan grandes?.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con ejercicio

Publicado por adalberto (17 intervenciones) el 02/09/2008 20:08:30
"HTTP/1.1 200 OK Content-Disposition: atttachment; filename="<%s>" Content-type: aplication/octet-stream "
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con ejercicio

Publicado por adalberto pluma gay (17 intervenciones) el 02/09/2008 20:45:34
HTTP/1.x 404 Not Found
<b>ERROR</b>: File <Filename> was not found
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con ejercicio

Publicado por adalberto (17 intervenciones) el 02/09/2008 21:10:21
while((bytesleidos=fread(buffer,sizeof(buffer),1,archivo))!=0)
{
if(enviototal(new_fd,buffer,&len)==-1)
/* asegura que llegue la totalidad del buffer*/
{ perror("enviototal");
printf("Se enviaron %d bytes a causa del error ",len);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con ejercicio

Publicado por aaa (17 intervenciones) el 02/09/2008 21:23:58
int enviototal(int s, char buffer[],int *len)
{
int total=0; /*cuantos bytes se enviaron*/
int restantes=*len; /*cuantos bytes quedan en el buffer*/
int n;
while (total<*len) {
n=send(s,buffer+total,restantes,0);
if(n==-1) {break;}
total+=n;
restantes-=n;
} /*fin while*/

*len=total; /*devuelve la cantidad enviada*/
return (n=-1?-1:0); /*devuelve -1 si falla, 0 en cualquier otro caso*/
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con ejercicio

Publicado por ada (17 intervenciones) el 02/09/2008 21:31:39
while(leido = fread(buffer,BUFFER,sizeof(buffer),fp))
{
total = 0;
while(total != leido)
{
if((cant_nv = send(new_fd,&buffer[total],BUFFER-total,0)) == -1)
{

perror("send");
}
total+=cant_nv;
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con ejercicio

Publicado por adaa (17 intervenciones) el 02/09/2008 22:02:59
while(leido = fread(buffer,1,sizeof(buffer),fp))
{
total = 0;
while(total != leido)
{
if((cant_nv = send(new_fd,&buffer[total],leido-total,0)) == -1)
{

perror("send");
}
total+=cant_nv;
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con ejercicio

Publicado por a (17 intervenciones) el 02/09/2008 22:05:01
while(leido = fread(buffer,1,sizeof(buffer),fp))
{
total = 0;
while(total != leido)
{
if((cant_nv = send(new_fd,&buffer[total],leido-total,0)) == -1)
{

perror("send");
}
total+=cant_nv;
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ayudaaa

Publicado por adrian (8 intervenciones) el 03/09/2008 07:11:39
no se hacer este problema haber si alguien me dice como hacer el codigo:

leer una lista de 10 personas (nombre, sexo y salario) utilizando 3 vectores.
a) listar sexo del mas joven y del mayor
b)listar aquellos nombres q cobren mas de $500
c)listar el nombre de todas las mujeres.
d)calcular y mostrar el promedio del salario de todas las personas.
el programa debe tener un menu con la opcion para cada isiso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con ejercicio

Publicado por Daniel Veliz (1 intervención) el 11/09/2008 17:22:20
Buenos dias, mi nombre es Daniel Veliz, estudiante de Ingeniería Industrial (interesado en cambiarme a Ingeniería en Informática) de Venezuela, me gusta mucho la programación en Turbo Pascal 7.0 y tengo problemas para resolver algunos enunciados, como éste por ejemplo:

Escriba un programa que determine si un año es bisiesto. Un año es bisiesto si es múltiplo de 4 excepto los múltiplos de 100 que no son bisiestos salvo que a su vez también sean múlitplos de 400 (1800 no es bisiesto, 2000 sí).

Y así como ése, tengo problemas en otros enunciados, agradezco su respuesta y gracias por su atención.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar