Menú

Mostrar Mensajes

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ú

Mensajes - Blaster

#171
Utilizando la  expresion sizeof c / sizeof *c dividiendo el tamaño completo del array
entre el tamaño del primer elemento, se obtiene la longitud del array de esta forma:
Código (cpp) [Seleccionar]
int c[] = { 1, 2, 3, 4 };

printf("Cantidad de elemetos: %d", sizeof c / sizeof *c );


Salida: 4

Pero sin especificar el tamaño del array ya que si lo hago me tira solo el tamaño del mismo y no
los elementos que la componen
De esta forma:
Código (cpp) [Seleccionar]
int c[10] = { 1, 2, 3, 4 };
Me da el valor que les comentaba que es 10, cuando el que deseo es 4.

Muchas gracias a los que contestaron  ;)
#172
Estoy trabajando con un progrma que hace uso de un array de tipos entero, y necesito determinar el tamaño en base al cotenido de esta; probe con strlen pero esta solo devuelve la longitud de uno de tipo char.

char cadena[15]= "Hola" ;

Aka definimos una arary de tamaño 15, pero la hemos inicializado y tiene una longitud de solo  4,
pasando esto a strlen efectivamente devuelve 4; existe una funcion igual a esta para
aplicarla a un entero.

Desde ya mucha gracias
#173
Modifique el codigo como me lo habias dicho, pero no obtengo la salida deseada
ya que quiero que me imprima, el nombre y el asiento que ocupa el empleado.
Y ademas no me detecta si el asiento esta o no ocupado, estoy todo liado con
esto de las estructuras.

Desde ya muchas gracias   ;)
#174
Alguien podria decirme en que estoy fallando, aka el codigo que estoy haciendo:

Código (cpp) [Seleccionar]
#include <stdio.h>

struct empleado{
    char nom[40];
    int asiento[3];
};
void ingresar(empleado d);
void asignarAsiento(empleado q[]);
void imprimir(empleado a);

int main()
{
     empleado e[3];
     asignarAsiento(e);
     for (int i=0; i!=3; ++i)
     imprimir(e[i]);
     return 0;
}
void ingresar(struct empleado d){
    printf("Nombre: ");
     scanf("%s", d.nom);
    printf("Asiento: ");
     scanf("%d", &d.asiento);
   }
void asignarAsiento(struct empleado q[]){
    int i, j;
    for(i=0; i<3; i++){
            ingresar(q[i]);
       for(j=0; j<i; j++) {
          if(q[i].asiento[j]==q[j].asiento[i]){
            printf ("Asiento ocupado\n");
            i--; break; }
               }
       }
}
void imprimir(struct empleado a){
    printf("Nombre\tAsiento");
    printf(" %s \t %d", a.nom, a.asiento);
}

A la hora de compilarlo el compilador me lanza dos errores:
error: cannot convert `empleado' to `empleado*' for argument `1' to `void asignarAsiento(empleado*)'
error: conversion from `empleado*' to non-scalar type `empleado' requested
#175
O puedes hacerlo asi para que la salida sea mas atractiva  ;D

#include <stdio.h>
#define N 10

int main(){
    int array[N], i, j;
   
    for(i=0; i<N; i++){
       printf ("Introducir numero para la posicion[%i]: ", i);
       scanf ("%d", &array[i]);

    for(j=0; j<i; j++) {
       if(array[j]==array[i]){
         printf ("Numero repetido!!!\n");i--;j--;break; }
                }
        }
    return 0;
}


Un saludo!!
#176
Preincremento y postincremento

b = a++;
Aka estamos realizando un postincremento de a, o lo que es lo mismo, incrementamos la variable a despues de las demas operaciones (asignar a b el valor de a).
Por lo tanto, si a vale 10, b tomara el valor 10 y tras eso a incrementara 1 pasando a valer 11.

b = ++a;
En este caso, preincrementamos a. Antes de cualquier operacion incrementamos la variable. Por tanto, si a vale 10 incrementamos esa variable pasando a valer 11 y luego asignamos ese valor a b.

Asi de simple un saludo  ;)
#177
Creo que esto es lo que buscas, no te entendi muy bien:

#include <stdio.h>
#include <string.h>

int main(){  
char cadena[20];
int i, longi;

scanf("%s", cadena);
longi = ((int)strlen(cadena));

for(i=0; i<longi; i++)
printf("\n %c", cadena[i]);

return 0;
}


Cualquier duda avisame  ;)
#178
Aqui tienes uno mio:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int anagrama(char cad[], int j) {
   char str1[100];
   int k,l;
   l=0;
   for(k=0; k<strlen(cad); k++)
      if (k!=j) {
         str1[l] = cad[k];
         l++;
      }
   str1[strlen(cad)-1] = '\0';
   strcpy (cad,str1);
   return 0;
}
int main(){
 char cadena1[100], cadena2[100], letra;
 int i,j;
 
 printf("Introduzca las dos cadenas: ");
 scanf("%s" "%s" ,cadena1, cadena2);
 
 if (strlen(cadena1) != strlen(cadena2))
    printf("Las cadenas no son anagramas\n");
 else
 {
      for(i=0; i<strlen(cadena1); i++)
      {
          for (j=0; j < strlen(cadena2); j++) {
              if (cadena1[i] == cadena2[j]) {
                 anagrama(cadena2,j);                  
                 break; }
          }
      }
      if(strlen(cadena2)==0)
        printf("Las cadenas son anagramas\n");
      else
        printf("Las cadenas no son anagramas\n");
 }
 return 0;
}


Espero te sirva  ;)
#179
Creo que utilizas el tipo de dato inapropiado para este caso:
Código (cpp) [Seleccionar]
char i[100];

Los diferentes tipos de datos tienen cierta capacidad, es decir, el char equivale a un byte, por lo que solo puedes guardar valores de 0 a 255 (sin signo, con signo es de -127 a 128) mientras un int es de 2 bytes y tiene mas capacidad y si quieres guardar un numero mayor a 255 en un char te dara resultados no deseados.
Te dejo el code nose si es lo que buscas:

Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;

int main()
{
int a = 0;
int j[100];

cout << "Ingrese un numero: ";
cin >> a;

for(int i = 0; a > i; a--){
       j[a]= a;
  cout << j[a] << " ";
  }
cin.get();cin.get();
return 0;
}


Un saludo  ;)
#180
Si efectivamente esta demas, vi que en el code de arriba  agregaste un:
printf(" Cifrado: ");
Creo que esta demas, me llamo la atencion la forma que implementaste
el for nunca la habia visto, es como la implementacion del while en el for

Un saludo  ;)