• Miércoles 15 de Abril de 2026, 11:28

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - ElZard

Páginas: [1]
1
C/C++ / Re:Como mejorar mis ifs
« en: Jueves 10 de Noviembre de 2011, 15:55 »
Hola a todos, estoy elaborando un programa y me quede atorado en unos ifs, hacen lo que les pido, pero quisiera saber de que otra forma se podria escribir la siguiente instruccion, es decir si se puede hacer en uno solo o en 2 a lo mas. Lo pregunto porque ultimamente me revuelve mi cabeza visual, bash y c, a tal punto que no se como usar los && y los || para cada lenguaje.

Código: C
  1.  
  2. if(i)
  3.    if(num[i]=='+' || num[i]=='-')
  4.       if(num[i-1]=='+' || num[i-1]=='-')
  5.           return 0;

Veamos, no soy un experto ya que soy de primer año, pero por lo que veo es que tienes 3 ifs seguidos, uno con una condicion y 2 con 2 condiciones en cada una separado por un 'o', osea tenemos que con que se cumple en cada if almenos una condicion retorna 0, (ya que con un solo v entre un 'o', devuelve v), osea se puede poner en un if con && entre las condiciones de cada if (ya que y solo devuelve v cuando todas sus los argumentos son v, osea almenos un v entre cada &&) lo que representaria que de una if pasa a otra

Código: C
  1.  
  2.    if((i) && (num[i]=='+' || num[i]=='-') && (num[i-1]=='+' || num[i-1]=='-'))
  3.           return 0;

Dime si te funciono
Saludos

2
C/C++ / Re:contar palabras de una cadena de caracteres
« en: Miércoles 9 de Noviembre de 2011, 23:06 »
Acabo de arreglar el fallo en el ejemplo que puse para C++.

Esta es otra forma de contar palabras, esta vez para C.
Básicamente cuenta las transiciones entre palabras y secuencias de espacios en blanco:

main.c
Código: [Seleccionar]
#include <stdio.h>

int contarPalabras(const char* cadena)
{
    int cambios = 1;
    int anteriorEsEspacio = 1;
    int actualEsEspacio;

    if (0 == cadena) return 0;

    while (*cadena)
    {
        actualEsEspacio = isspace(*cadena) != 0;
        cambios += actualEsEspacio ^ anteriorEsEspacio;
        anteriorEsEspacio = actualEsEspacio;
        cadena++;
    }

    return cambios / 2;
}

void imprimirPalabras(const char* cadena)
{
    printf("%s\nPalabras: %d\n\n", cadena, contarPalabras(cadena));
}

int main()
{
    imprimirPalabras("");
    imprimirPalabras("     ");
    imprimirPalabras("una");
    imprimirPalabras(" una");
    imprimirPalabras("una ");
    imprimirPalabras(" una ");
    imprimirPalabras(" dos palabras ");
    imprimirPalabras("dos   palabras");
    imprimirPalabras("  Varias palabras   separadas   por uno o varios espacios");
    imprimirPalabras("Varias \n Palabras\n en \n  varias  \nlineas");
}

No me gusta revivir temas, pero tengo una duda, y no me gusta quedarme con dudas, y es que soy alumno de primer año
y con suerte lo mas dificil que me han pasado es arreglos y funciones en c y no entiendo ni mitad de sus codigos, pero igual pude hacer un programa que cuenta palabras

Código: [Seleccionar]
#include <stdio.h>

char a[100];

int Calcular_Palabras ()
{
    int palabras=1,contador=0;
   
    while(a[contador] != '\0') {
    if(a[contador] == ' ')
    palabras++;
    contador++;
    }
   
    return palabras;
}

int main (void)
{     
    while (1) {
    printf("\n\tIngrese una cadena: ");
    gets(a);
   
    printf("\n\tEl numero de palabras es: %i\n\n",Calcular_Palabras());
   
    }
   
    return 0;   
}

entonces no entiendo por que ustedes lo hacen tan dificil y con tantas cosas... o sere yo xD

Páginas: [1]