Chicos, inmensamente agradecido, gracias a todos sus datos entendí que me hacía falta en mi código y ahora todo funciona. Muchas gracias!!!
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú
"SELECT * FROM Alumno WHERE rut = :rut"
define("SQLITE_DB_PATH", "navegadorcito.db");
$connection = new SQLite3(SQLITE_DB_PATH) or die("No se pudo Conectar con la base de Datos");
$sqlStr = "SELECT * FROM Alumno WHERE rut = " . $_GET["rut"];
echo $sqlStr;
$connection->query($sqlStr);
$query = $connection->query($sqlStr);
while($fila = $query->fetchArray()) {
print_r($fila);
echo "<br/>";
}
//Connect this creates a new PDO object
$db = new PDO('sqlite:/path/to/database.sdb');
//Build your sql query with parameters :field
$sql = "SELECT * FROM sometable WHERE someCol=:field";
//Prepare the above query
$statement = $db->prepare($sql);
//Bind the value received from the form or such with the parameter place holder
$statement->bindParam(':field', $_POST['someVal']);
//Execute the prepared query
$statement->execute();
//Fetch the result
$result = $statement->fetchAll(PDO::FETCH_ASSOC);
//Treat the result as a pure array
foreach ($result as $row){
//do something
}
Cita de: .rn3w. en 24 Agosto 2016, 21:58 PM
podrias vaciar todos los demas elementos a un nuevo array
public static void main (String []args){
int bus[] = new int [10];
for (int i = 0; i <bus.length-2; i++){
bus[i]=i*2;
}
int cont =0;
int prac[] = new int [10];
int variableEliminar=8;
for (int i = 0; i<bus.length-2; i++){
if(bus[i]!=variableEliminar){
prac[cont]=bus[i];
cont++;
}
}
System.out.println();
for (int i = 0; i <bus.length; i++){
System.out.println(bus[i]);
}
System.out.println();
for (int i = 0; i <prac.length; i++){
System.out.println(prac[i]);
}
bus=prac;
System.out.println();
for (int i = 0; i <bus.length; i++){
System.out.println(bus[i]);
}
}
public static void main (String []args){
int bus[] = new int [10];
for (int i = 0; i <bus.length-2; i++){
bus[i]=i*2;
}
bus[0]=1;
System.out.println();
for (int i = 0; i <bus.length; i++){
System.out.println(bus[i]);
}
}
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
#include <errno.h>
#include <pthread.h>
#include <semaphore.h>
#define Max_Trabajo 60 // El número máximo de hebras Trabajos.
// Prototipos de funciones...
void *Trabajos(void *num);
void *servidor(void *);
void rango_espera(int secs);
//Se definen los semaforos.
//El semaforo colaimpresion pone el limite del numero de Trabajos que se permiten ingresar al cuarto de espera en un tiempo determinado.
sem_t colaimpresion;
// Ocupar_servidor asegura la mutua exclusividad en el acceso al uso del servidor.
sem_t Ocupar_servidor;
// DescansaServidor es usada para permitir que el servidor descanse hasta que llegue el Trabajo.
sem_t DescansaServidor;
// MantenerTrabajo es usada para hacer que el Trabajo espere hasta que el servidor haya imprimido el documento.
sem_t MantenerTrabajo;
// Bandera para la hebra del servidor cuando todos los Trabajos han sido atentidos.
int Todohecho = 0;
int TrabajosEsperandoServidor=0;
int numEspacios=1;
int main(int argc, char *argv[])
{
int i;
pthread_t btid;
pthread_t tid[Max_Trabajo];
int numTrabajos;
int Numero[Max_Trabajo];
printf("El ńumero maximo de Trabajos es 60. Ingresa el numero de Trabajos.\n");
do{
scanf("%d",&numTrabajos);
if(numTrabajos > Max_Trabajo)printf("El nº de Trabajos debe ser menor a %d, ingrese nº de Trabajos.\n",Max_Trabajo);
}while(numTrabajos>Max_Trabajo);
if (numTrabajos > Max_Trabajo) {
printf("El Maximo numero de Trabajos es %d.\n", Max_Trabajo);
/******system("PAUSE");*****************/
getchar();
getchar();
return 0;
}
printf("Tenemos un servidor que imprime documentos.\n");
for (i = 0; i < Max_Trabajo; i++) {
Numero[i] = i;
}
// Se inicializa el semaforo con valores iniciales...
sem_init(&colaimpresion, 0, numEspacios);
sem_init(&Ocupar_servidor, 0, 1);
sem_init(&DescansaServidor, 0, 0);
sem_init(&MantenerTrabajo, 0, 0);
// Se Crea el servidor.
pthread_create(&btid, NULL, servidor, NULL);
// Se Crea el Trabajo.
for (i = 0; i < numTrabajos; i++) {
pthread_create(&tid[i], NULL, Trabajos, (void *)&Numero[i]);
}
// Se juntan las hebras a esperar que las otras terminen.
for (i = 0; i < numTrabajos; i++) {
pthread_join(tid[i],NULL);
}
// Cuando todos los Trabajos hayan terminado, se elimina la hebra servidor.
Todohecho = 1;
sem_post(&DescansaServidor); // Se despierta al servidor en la salida.
pthread_join(btid,NULL);
getchar();
getchar();
return 0;
}
void *Trabajos(void *Numero) {
int num = *(int *)Numero; // periodo de tiempo aleatorio para llegar.
printf("hebra %d creada\n", num);
rango_espera(5);
if(numEspacios+1==TrabajosEsperandoServidor)printf("Trabajo %d intenta ingresar a la cola de impresion\nEl Trabajo desiste de ingresar a la cola porque hay muchos trabajos\n", num); // Espere hasta que sea prudente ingresar a la cola de impresion...
sem_wait(&colaimpresion);
printf("Trabajo %d intenta ingresar a la cola de impresion \nTrabajo %d entra a la cola de impresion.\n************************************Hay %d Trabajos esperando a ocupar el servidor \n", num, num,++TrabajosEsperandoServidor); // Esperar a que el servidor este libre..
//printf("*****************************************\n");
// printf("**Hay %d Trabajos en la cola de impresion **\n",TrabajosEsperandoServidor);
// printf("*****************************************\n");
sleep(10);
sem_wait(&Ocupar_servidor); // Si el servidor está libre entonces un trabajo aprovecha.
sem_post(&colaimpresion); // Despierta el servidor...
printf("Trabajo %d ocupa el servidor.\n", num);
sem_post(&DescansaServidor); // Espera a que el servidor termine de imprimir el trabajo.
sem_wait(&MantenerTrabajo); // Deja de ocupar el servidor.
sem_post(&Ocupar_servidor);
printf("Trabajo %d deja de ocupar el servidor.\n************************************Hay %d Trabajos intentando ocupar el servidor\n", num,--TrabajosEsperandoServidor);
// printf("*****************************************\n");
// printf("**Hay %d Trabajos en la cola de impresion **\n",TrabajosEsperandoServidor);
//printf("*****************************************\n");
sleep(10);
}
void *servidor(void *junk)
{
// Mientras todavía hayan Trabajos que atender... El servidor es omniciente y puede decir si hay Trabajos aún en el camino a su tienda.
while (!Todohecho) { // Esperar hasta que alguien llegue y te despierte..
if( TrabajosEsperandoServidor==0 ) printf("el servidor esta esperando\n");
sem_wait(&DescansaServidor); // Omitir todo esto al final...
if (!Todohecho)
{ // Tomar un monto aleatorio de tiempo para imprimir el Trabajo..
printf("el servidor esta imprimiendo el documento\n");
rango_espera(3);
printf("el servidor ha terminado de imprimir el documento.\n"); // Se libera al Trabajo cuando se haya imprimido el documento...
sem_post(&MantenerTrabajo);
}
else {
printf("El servidor ha terminado con la cola de impresion.\n");
}
}
}
void rango_espera(int secs) {
int len = 1; // Se genera un numero arbitrario...
sleep(len);
}
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
#include <errno.h>
#include <pthread.h>
#include <semaphore.h>
#define Max_Clientes 25 // El número máximo de hebras clientes.
// Prototipos de funciones...
void *clientes(void *num);
void *barbero(void *);
void rango_espera(int secs);
//Se definen los semaforos.
//El curto_espera pone el limite del numero de clientes que se permiten ingresar al cuarto de espera en un tiempo determinado.
sem_t cuartoespera;
// La SillaBarbero asegura la mutua exclusividad en el acceso a la silla del barbero.
sem_t SillaBarbero;
// AlmohadaBarbero es usada para permitir que el barbero descanse hasta que llegue el cliente.
sem_t AlmohadaBarbero;
// CinturonAsiento es usada para hacer que el cliente espere hasta que el barbero haya cortado su cabello.
sem_t CinturonAsiento;
// Bandera que para la hebra del barbero cuando todos los clientes han sido atentidos.
int Todohecho = 0;
int clientesBarberia=0;
int numSillas;
int main(int argc, char *argv[])
{
int i;
pthread_t btid;
pthread_t tid[Max_Clientes];
int numClientes;
int Numero[Max_Clientes];
printf("El ńumero maximo de clientes es 25. Ingresa el numero de clientes y sillas.\n");
do{
scanf("%d",&numClientes);
scanf("%d",&numSillas);
if(numClientes > Max_Clientes)printf("El nº de clientes debe ser menor a %d, ingrese nº de clientes y sillas nuevamente.\n",Max_Clientes);
}while(numClientes>Max_Clientes);
if (numClientes > Max_Clientes) {
printf("El Maximo numero de Clientes es %d.\n", Max_Clientes);
/******system("PAUSE");*****************/
getchar();
getchar();
return 0;
}
printf("Una solucion al problema del barbero dormilon usando semaforos.\n");
for (i = 0; i < Max_Clientes; i++) {
Numero[i] = i;
}
// Se inicializa el semaforo con valores iniciales...
sem_init(&cuartoespera, 0, numSillas);
sem_init(&SillaBarbero, 0, 1);
sem_init(&AlmohadaBarbero, 0, 0);
sem_init(&CinturonAsiento, 0, 0);
// Se Crea el Barbero.
pthread_create(&btid, NULL, barbero, NULL);
// Se Crea el Cliente.
for (i = 0; i < numClientes; i++) {
pthread_create(&tid[i], NULL, clientes, (void *)&Numero[i]);
}
// Se juntan las hebras a esperar que las otras terminen.
for (i = 0; i < numClientes; i++) {
pthread_join(tid[i],NULL);
}
// Cuando todos los clientes hayan terminado, se elimina la hebra barbero.
Todohecho = 1;
sem_post(&AlmohadaBarbero); // Se despierta al barbero en la salida.
pthread_join(btid,NULL);
getchar();
getchar();
return 0;
}
void *clientes(void *Numero) {
int num = *(int *)Numero; // Sale de la tienda y toma algún periodo de tiempo aleatorio para llegar.
printf("hebra %d creada\n", num);
rango_espera(5);
if(numSillas+1==clientesBarberia)printf("cliente %d llega a la barberia\nEl cliente abandona la barberia porque esta llena\n", num); // Espere hasta que haya espacio para abrir en la sala de espera...
sem_wait(&cuartoespera);
printf("cliente %d llega a la barberia \ncliente %d entra a la sala de espera.\n************************************Hay %d clientes en la barberia \n", num, num,++clientesBarberia); // Esperar a que la silla del barbero este libre..
//printf("*****************************************\n");
// printf("**Hay %d clientes en la barberia **\n",clientesBarberia);
// printf("*****************************************\n");
sleep(10);
sem_wait(&SillaBarbero); // Si la silla esta libre entonces abandona su lugar en la sala de espera..
sem_post(&cuartoespera); // Despierta el Barbero...
printf("cliente %d llama al barbero.\n", num);
sem_post(&AlmohadaBarbero); // Espera a que el barbero termine de cortar su pelo.
sem_wait(&CinturonAsiento); // Deja la silla.
sem_post(&SillaBarbero);
printf("cliente %d deja la barberia.\n************************************Hay %d clientes en la barberia\n", num,--clientesBarberia);
// printf("*****************************************\n");
// printf("**Hay %d clientes en la barberia **\n",clientesBarberia);
//printf("*****************************************\n");
sleep(10);
}
void *barbero(void *junk)
{
// Mientras todavía hayan clientes que atender... El barbero es omniciente y puede decir si hay clientes aún en el camino a su tienda.
while (!Todohecho) { // Esperar hasta que alguien llegue y te despierte..
if( clientesBarberia==0 ) printf("el barbero esta jugando\n");
sem_wait(&AlmohadaBarbero); // Omitir todo esto al final...
if (!Todohecho)
{ // Tomar un monto aleatorio de tiempo para cortar el cabello del cliente..
printf("el barbero esta cortando el cabello\n");
rango_espera(3);
printf("el barbero ha terminado de cortar el cabello.\n"); // Se libera al cliente cuando ya se le haya cortado el pelo...
sem_post(&CinturonAsiento);
}
else {
printf("El barbero ha terminado por el dia.\n");
}
}
}
void rango_espera(int secs) {
int len = 1; // Se genera un numero arbitrario...
sleep(len);
}
typedef struct NODO{
char *nombre;
struct NODO *sgte;
}nodo;
void invertirlista(nodo **inicio){
nodo *aux,*next;
aux=*inicio;
*inicio=NULL;
while(aux!=NULL){
next=aux->sgte;
aux->sgte=*inicio;
*inicio=aux;
aux=next;
}
}
Cita de: plataplomo2948 en 8 Noviembre 2014, 21:54 PM
Bueno, me parece que usted sabe de lo que habla aun que no entiendo exactamente cual es su objectivo final, pero eso es como hacer el codigo para que compila bien. Eso imprima hasta 32.
La proxima vez, deberia poner su error de compilicaion y decir que quiere hacer "un array de int dentro de un array de struct" : ) suerte
typedef struct Humano
{
int* Trabajos;
} HUMANO, *PHUMANO;
int main ()
{
int CantidadDeTrabajos = 4; //
int CantidadDePersonas = 8; // personas
int Cont = 0;
// declarar espacio por un array de struct
PHUMANO Primera = (PHUMANO)malloc(sizeof(HUMANO) * CantidadDePersonas);
// por cada persona, declara un array dentro el struct
for (int i = 0; i < CantidadDePersonas; i++)
Primera[i].Trabajos = (int*)malloc(sizeof(int) * CantidadDeTrabajos);
for (int i = 0; i < CantidadDePersonas; i++)
{
for (int j = 0; j < CantidadDeTrabajos; j++)
{
Cont += 1;
Primera[i].Trabajos[j] = Cont;
}
}
for (int i = 0; i < CantidadDePersonas; i++)
for (int j = 0; j < CantidadDeTrabajos; j++)
printf("Trabajo#%i\n", Primera[i].Trabajos[j]);
//Primera[0].Trabajos[0] = 248;
//printf("Primera->Trabajos = %i\n", Primera[0].Trabajos[0]);
for (int i = 0; i < CantidadDePersonas; i++)
free((int*)Primera[i].Trabajos);
free(Primera);
_getch ();
return 0;
}
Modificacion - Al respecto a 1 - no estamos trabajando con los vectores, estos son arrayes (son parecidos pero hay diferencias). Todavia si estariamos trabajando con vectores, la alocacion dinamica no seria necesario por ese codigo. Tambien, los vectores son de C++, asi que si quiere usar vectores - seria mejor usar new/delete en vez de malloc/free (eso no va a cambiar el comportamiento de su programa, solo para notar la diferencia entre C y C++ y por que no es mejor practica a mezclarlos).
Generalmente, la alocacion dinamica es necesario solo cuando acepta algun tipo de input, sea de un archivo, stdin, socket, etc. Cuando hace un inicilizacion estatica (int i = 0), esa secion de memoria (los 4 bytes) SIEMPRE va a ser libre para manipular, si o si.
#include <stdio.h>
typedef struct humano{
int *trabajos;
}persona;
int main(){
int i,j,cont=1;
int cantidad_personas=8;
int cantidad_trabajos=4;
persona *primera;
primera=(persona *)malloc(sizeof(persona)*cantidad_personas);
for (i=0; i < cantidad_personas; i++){
primera[i].trabajos=(int *)malloc(sizeof(int)*cantidad_trabajos);
}
for (i = 0; i < cantidad_personas; i++){
for (j = 0; j < cantidad_trabajos; j++){
primera[i].trabajos[j]=cont;
cont++;
}
}
for (i = 0; i < cantidad_personas; i++){
for (j = 0; j < cantidad_trabajos; j++){
printf("%d ",primera[i].trabajos[j]);
}
printf("\n");
}
for (i = 0; i < cantidad_personas; i++){
free((int *) primera[i].trabajos);
}
free(primera);
return 0;
}
for (i=0; i < cantidad_personas; i++){
primera[i].trabajos=(int *)malloc(sizeof(int)*cantidad_trabajos);
}
for (int i = 0; i < CantidadDePersonas; i++)
free((int*)Primera[i].Trabajos);
free(Primera[i].trabajos)?