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.


Temas - Pino1952

Páginas: [1]
1
Hola a todos.
El programa que dejo a continuación funciona correctamente, lo que no logro hacer son 2 cosas que desearía me enseñen a concretarlas.-
Quiero en primer lugar eliminar esta línea.

Código: [Seleccionar]
#define ELEMENTOS 15
Como debo hacer con sizeof para saber cuántos punteros tengo declarado en el array de punteros provincias, me funciona con char, int, pero no con array de punteros.-
Lo otro que no puedo lograr es pasar el array provincias a una función, para que se entienda quiero hacer lo mismo pero con 2 funciones, una que se llame mostrar y la otra ordenar, en este caso me interesaría más que me escriban un poco de teoría que la sintaxis (si es mucho pedir, mil disculpas).-

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

#define ELEMENTOS 15

int main(void){
char *provincias[ELEMENTOS] = {"Tucuman", "Santa Fe", "Buenos Aires", "Rio Negro", "Neuquen",
"Misiones", "Catamarca", "Santa Cruz", "Jujuy", "Chaco",
"Formosa", "Corrientes", "Salta", "La Rioja", "Cordoba"};
char *temp;
int i, j;

printf("\n provincias Argentinas desordenadas\n\n" );
for(i=0; i<ELEMENTOS; i++){
printf(" %s\n", provincias[i]);
}

for(i=0; i<ELEMENTOS-1; i++){
for(j=i+1; j<ELEMENTOS; j++){
if(strcmp(provincias[i], provincias[j]) > 0){
temp = provincias[i];
provincias[i] = provincias[j];
provincias[j] = temp;
}
}
}

printf("\n Ordenadas alfabeticamente\n\n" );
for(i=0; i<ELEMENTOS; i++){
printf(" %s\n", provincias[i]);
}

printf("\n Pulse [Enter] para finalizar..."); getchar();
return 0;
}

//http://platea.pntic.mec.es/vgonzale/cyr_0204/cyr_01/control/lengua_C/cadenas.htm#strcmp

Saludos.
Daniel
 

2
Hola a todos.

Nuevamente por aquí, el enunciado del libro con el que estoy estudiando dice:

Citar
Escriba un programa que lea un carácter desde el teclado y que pruebe el carácter con cada una de las funciones de la biblioteca de manipulación de caracteres.


Como no quiero utilizar 20 if ni switch se me antojo hacerlo de esta manera, obviamente me da un error que no puedo solucionar, me podrían informar si esto es posible o si estoy proponiendo un disparate.-   
 
Código: [Seleccionar]
#include<stdio.h>
#include<string.h>

int main(int argc,char **argv){
char a, *funManCad[] = {"islower", "isupper", "isdigit"};
char *mensaje[] = {"una letra minuscula", "una letra mayuscula", "un numero"};
int i;

printf("\n Ingrese un caracter cualquiera [confirme con Enter]...:");
a = getchar();
for(i=0; i<3; i++){
if(funManCad[i](a)){
printf("\n Ingreso %s", mensaje[i]);
}
}

printf("\n\n Pulse [Enter] para finalizar..."); getchar();getchar();
return 0;
}

A simple vista se nota que me faltan muchas funciones, pero esto es sólo para la consulta.-

Saludos.
Daniel

3
Hola a todos.
Desconozco si en sus países se juega al truco (Argentina), pero para el caso es irrelevante, lo que necesito es generar 6 pares de números y que ninguno de los 6 pares se duplique, ejemplos:
1 – 7
3 – 3
0 – 5
-------- 
0 – 5 <-- duplicado (lo que no tiene que ocurrir)
1 – 4
3 – 8

Pensé en sumar cada pares de números e ir poniéndolos en un vector y antes de confirmarlo recorrer con un bucle para establecer que realmente el número a ingresar no esté ya en el  vector, lo que pasa que parece un poco largo porque después tendría que separar los 2 números para buscar el palo y la cara para repartir las cartas.-   
Bueno es todo, ¿tienen una manera más sencilla para lograr lo mismo?.-

El programa:
Código: [Seleccionar]
//Programa para jugar al truco

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

void darCartas(const char *palos[], const char *caras[]);

int main(void){
const char *palos[4] = {"Espadas", "Oro", "Basto", "Copa"};
const char *caras[10] = {"As", "Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "Sota",
"Caballo", "Rey"};
srand(time(NULL));


printf("\n Cartas para la maquina\n");
darCartas(palos, caras);

printf("\n\n Cartas para el humano\n");
darCartas(palos, caras);

printf("\n\n Pulse [Enter] para finalizar..."); getchar();
return 0;
}

void darCartas(const char *palos[], const char *caras[]){
int i, _palos, _caras;

for(i=0; i < 3; i++){
_palos = rand() % 4;
_caras = rand() % 10;
//printf("\n %d == cara = %d", _palos, _caras);
printf("\n %s de %s",  *(caras + _caras), *(palos + _palos));
}
}



Desde ya muchas gracias y Saludos.
Daniel

4
Hola a todos.
Primero una pequeña aclaración, créanme que tengo toda la mañana consultando al maestro google y no puedo dar con la  solución.
El caso es que estoy en el capítulo punteros y cree un programita que dejo a continuación de un apuntador a un arreglo de 10 enteros, me parece que la manera de cargar los datos es correcta pero en lo que estoy lidiado es con imprimirlos.-

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

#define MAX 10

int main(void){
int *ptrVector[MAX], i;

for(i=0; i<MAX; i++){
*(ptrVector + i) = &i;
}

for(i=0; i<MAX; i++){
printf("%d ", *(ptrVector + i));
}


printf("\n\n Pulse una tecla para finalizar..."); getchar();
return 0;
}


Citar
C:\ProgramasNotepad\Punteros.c: In function 'main':
C:\ProgramasNotepad\Punteros.c:13:3: warning: format '%d' expects argument of type 'int', but argument 2 has type 'int *' [-Wformat=]
   printf("%d ", *(ptrVector + i));
   ^

Es todo, espero que puedan ayudarme a encontrar la sintaxis correcta.-
Saludos.
Daniel

5
Hola a todos.
En primer lugar aclarar que no encontré un foro adecuado para hacer esta pregunta (los moderadores decidirán).-
Bueno es más o menos así, si pongo por ejemplo printf(“\n”); el archivo ejecutable se crea normalmente, si por pongo printf(“***”); también funciona, si le agrego más cosas o pongo un espacio ya no me da ningún error pero me borra el .exe.- 
Pasé 2 antivirus, estoy compilando con gcc en línea de comando y lcc-win32, no espero que a alguien le haya ocurrido algo similar para poder ayudarme, si espero que me puedan tirar alguna idea, no se más que hacer.-  :(

Saludos.
Daniel

6
Hola, y que tengan un muy buen día.
creo que en el enunciado está resumido lo que no supe responder a la pregunta que encontré en el libro con el que estoy estudiando C.-
Bueno es todo, ¿se entiende, se puede?.-

Saludos.
Daniel

7
Un muy buen día para todos.

Lo que me tiene dando vueltas hace 2 días es el tema de la recursividad, el enunciado del libro con el que estoy estudiando c pregunta ¿Qué hace el siguiente programa?, lo que hace es dar como resultado 180 que parecería que está multiplicando 18 * 10 (x * y) pero no hay ninguna multiplicación, por lo menos es lo que me parece.-
En definitiva necesitaría (si disponen de tiempo ;)) que me den teoría sobre el tema recursividad.-   

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

int misterio(int a, int b);
 
int main(void){
int x = 18, y=10, result=0;
result = misterio(x, y);
printf("\n misterio develado ==> %d", result);

return 0;
}

int misterio(int a, int b){
/* caso base*/
printf("\n a=%d == b=%d", a, b); /* Esto no está en el libro*/
if(b == 1){
return a;
}
else{
return a + misterio(a, b-1);
}
}

Un gran abrazo a todos.

Daniel     

8
Hola a todos.
Tengo que hacer una operación de multiplicación con resultado mayor a 50 dígitos,
consultando a él sabelotodo google me entero que se puede hacer de estas 2 maneras:

…puedes hacerlo byte a byte.
O hacer la multiplicación como un bucle de sumas.-

La segunda la logré, pero la primera apenas estoy en los inicios de la suma binaria, la ayuda que les solicito es la siguiente:
Si tengo estas 2 variables
Código: [Seleccionar]
char a[] = “32456987”, b[] = “23654”;
¿Cómo debo hacer para transformarlas a byte/bits? .- 

Desde ya muchas gracias por el tiempo, Saludos.
Daniel     

9
Citar
Hago esta aclaración porque en muchos casos suponen que tengo 15 o 20 años(es lo lógico) y en realidad tengo 61, como comprenderán no voy a la facultad y la gente que conozco no tiene la más mínima idea lo que es la computadora y menos programar.-

Hola a todos.
El programita lo que hace es verificar que se ingrese día , mes y año válidos, el problema es que no puedo lograr  quitar el 0 que aparece después del printf, como lo muestra la imagen.-



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

void mostrar(int orden, int dd, int mm, int aaaa);

int main(void){

    int dd,mm,aaaa,orden,ok,ch; dd = mm = aaaa = orden = ok = ch = 0;

    do{
        dd = 0;
mostrar(0, dd, mm, aaaa);
ok = scanf("%d", &dd) == 1 && dd >= 1 && dd <= 31;
while ((ch = getchar()) != EOF && ch != '\n');
    }while(!ok);

    do{
mm = 0;
mostrar(1, dd, mm, aaaa);
ok = scanf("%d", &mm) == 1 && mm >= 1 && mm <= 12;
while ((ch = getchar()) != EOF && ch != '\n');
    }while(!ok);

    do{
aaaa = 0;
mostrar(2, dd, mm, aaaa);
ok = scanf("%d", &aaaa) == 1 && aaaa >= 1 && aaaa <= 9999;
while ((ch = getchar()) != EOF && ch != '\n');
    }while(!ok);
    mostrar(3, dd, mm, aaaa);

    return 0;
}

void mostrar(int orden, int dd, int mm, int aaaa){
    system("CLS");
    if(orden == 0){
    printf("\n Ingrese dia...: %d", dd);
    }
        if(orden == 1){
printf("\n Ingrese dia...: %d", dd);
printf("\n Ingrese mes...: %d", mm);
    }
    if(orden == 2){
printf("\n Ingrese dia...: %d", dd);
printf("\n Ingrese mes...: %d", mm);
printf("\n Ingrese anio..: %d", aaaa);
    }
}
Lo que dejo en claro es que no quiero utilizar conio, Windows.h ni nada que salga de lo estándar.-

Espero que en primer lugar que esto sea factible de lograr y que alguien en este foro sepa cómo hacerlo.-

Saludos.
Daniel

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".