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 - Alejandra Mirano

Páginas: [1]
1
Hola necesito orientación para saber porque se imprimen caracteres extraños que no son los que quiero que se impriman, además de tener problemas con hacer la comparación de caracteres para saber si es palíndromo o no la palabra. Si me pudieran ayudar se los agradecería. Gracias.

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

struct elemento{
char dato[30];
struct elemento *siguiente;
};

typedef struct elemento Nodo;

Nodo*crearPila();
int pilaVacia(Nodo *cima);
void insertar(char *x, Nodo **cima);
void eliminar(Nodo **cima);
void imprimePila(Nodo **cima);
void insertarPalindromo(char *x, Nodo **cima);
void extraer(Nodo **cima);
main(){
char texto[30];
Nodo *cima;
printf("Inserte palindromo: ");
scanf("%s", texto );
insertarPalindromo(texto,&cima);

}

Nodo* crearPila(){
Nodo *cima;
cima=NULL;
printf("Pila creada. \n");
return cima;
}

int pilaVacia(Nodo *cima){
if(cima==NULL){
return 1; //regresa 1 si es vacía
}else
return 0; //regresa 0 si no es vacía
}

void insertar(char *x, Nodo **cima){
//fflush(stdin);//inserta al inicio de la lista
printf("\nPush(insertar): %c\n",x);
Nodo *nuevo;
nuevo = (Nodo *) malloc (sizeof(Nodo));
nuevo->dato,x;//
nuevo->siguiente=*cima;
*cima=nuevo;

}

void eliminar(Nodo **cima){ //elimina del inicio de la lista
    printf("\nPop (eliminar)\n");
if(pilaVacia(*cima)==1){
printf("Error al eliminar: no hay elementos en la pila.\n\n");
}else{
Nodo *actual;
actual=*cima;
*cima=actual->siguiente;
if(strcmp(actual->dato,actual->dato)==0){  /*aquí tengo problemas con la
 comparación de caracteres*/
printf("Coinciden dato %c y %c !!!\n", actual->dato, actual->dato); /*aquí se imprimen caracteres extraños*/
}else{
printf("NO es palindromo!!!");

}
free(actual);

}
}

void imprimePila(Nodo **cima){
Nodo *actual;
actual=*cima;

if(pilaVacia(*cima)==1){
printf("Error al imprimir: no hay elementos en la pila.\n\n");
}else{
printf("-------PILA--------\n");
while(actual != NULL){
//fflush(stdin);
printf("%c \n",actual->dato);// aquí se imprimen caracteres extraños
actual = actual->siguiente;
}
printf("-------------------\n");
}
}

void insertarPalindromo(char *x, Nodo **cima){
crearPila();
Nodo *nuevo;
nuevo=*cima;
printf("%s\n",x);
int i=0;
char palindromo [strlen(x)];
for(i=0; i<strlen(x); i++){
insertar(x[i], &*cima); //hasta aca todo bien
}
while(pilaVacia(*cima)==0){
i--;
eliminar(&*cima);
imprimePila(&*cima);
}

printf("La palabra es palindromo ");
}



2
Necesito  saber porque se imprimen los números de el arreglo con ceros incluidos en la funcion getbval.


Código: [Seleccionar]
#include <stdio.h>
#include <string.h>
int getbval(char num[], char base[], unsigned int **valorptr);
int validar(int partes[], char base[], char num[]);
void remplazar(char num[], int **partes);
main(){
char entrada[255];
char num[50];
char base[2];
char delim[] = "#";
int i = 0;
unsigned int * valor;
fflush(stdin);
printf("inserte numero:");
scanf("%s", &entrada);
if (strstr(entrada, "#") == NULL) { //si no se especifica base se asume base 10
strcat(entrada, "#10");
}
char * token = strtok(entrada, delim);
while (token != NULL){ //strtok separa la entrada en lo que viene antes y despues del #. se asigna respectivamente
if (i == 0){
strcpy(num, token);
i++;
} else if (i == 1) {
if (token == NULL) {
strcpy (base, "10");
} else {
strcpy(base, token);
}
}
token = strtok(NULL, "#");
}
if (getbval(num, base, &valor) == 1){ //revision de
printf("La entrada es: %s, la base es: %s, y el valor es: %i", num, base, valor);//temporal para revisar los valores
} else {
printf("error");
}
}
int getbval(char num[], char base[], unsigned int **valorptr){
int valor, i;
int partes[255];
remplazar(num, &partes);

printf("partes: \n");
for (i=NULL; i<strlen(num); i++){ //temporal

printf("%i\n", partes[i]); //temporal
} //temporal
if (validar(partes, base, num) == 1){
*valorptr = 125;
return(1); //temporal
} else {
return(0);
}

}
void remplazar(char num[], int **partes){
int i;
for (i=0; i < strlen(num); i++){
if (num[i] == '1'){
partes[i] = 1;
} else if (num[i] == '2'){
partes[i] = 2;
} else if (num[i] == '3'){
partes[i] = 3;
} else if (num[i] == '4'){
partes[i] = 4;
} else if (num[i] == '5'){
partes[i] = 5;
} else if (num[i] == '6'){
partes[i] = 6;
} else if (num[i] == '7'){
partes[i] = 7;
} else if (num[i] == '8'){
partes[i] = 8;
} else if (num[i] == '9'){
partes[i] = 9;
} else if (num[i] == 'a'){
partes[i] = 10;
} else if (num[i] == 'b'){
partes[i] = 11;
} else if (num[i] == 'c'){
partes[i] = 12;
} else if (num[i] == 'd'){
partes[i] = 13;
} else if (num[i] == 'e'){
partes[i] = 14;
} else if (num[i] == 'f'){
partes[i] = 15;
} else if (num[i] == 'g'){
partes[i] = 16;
} else if (num[i] == 'h'){
partes[i] = 17;
} else if (num[i] == 'i'){
partes[i] = 18;
} else if (num[i] == 'j'){
partes[i] = 19;
} else if (num[i] == 'k'){
partes[i] = 20;
} else if (num[i] == 'l'){
partes[i] = 21;
} else if (num[i] == 'm'){
partes[i] = 22;
} else if (num[i] == 'n'){
partes[i] = 23;
} else if (num[i] == 'o'){
partes[i] = 24;
} else if (num[i] == 'p'){
partes[i] = 25;
} else if (num[i] == 'q'){
partes[i] = 26;
} else if (num[i] == 'r'){
partes[i] = 27;
} else if (num[i] == 's'){
partes[i] = 28;
} else if (num[i] == 't'){
partes[i] = 29;
} else if (num[i] == 'u'){
partes[i] = 30;
} else if (num[i] == 'v'){
partes[i] = 31;
} else if (num[i] == 'w'){
partes[i] = 32;
} else if (num[i] == 'x'){
partes[i] = 33;
} else if (num[i] == 'y'){
partes[i] = 34;
} else if (num[i] == 'z'){
partes[i] = 35;
}
}
}
int validar(int partes[], char base[], char num[]){
int i, flag=1;
for (i=0; i < strlen(num); i++){
if (partes[i] > (int) base){
flag = 0;
}
}
if (flag == 1){
return (1);
} else {
return (0);
}
}

3
Alguien sabe cómo poner símbolos como el signo de interrogación abierto y cerrado?

Puedes usar la función
setlocale(LC_CTYPE, "Spanish"); que se encuentra en la libreria #include<locale.h> de C.
Espero te sirva.

4
Muchas gracias!!, si me funciono, solo elimine la declaración de la variable temp por otra que ya tenia fija.

5
Hola, ya intenté cambiar los valores de los números ingresados por el usuario pero aún no me sale como piden el problema, si me pudieran decir en qué estoy mal o qué me falta se los agradecería mucho.

Citar
/*Realiza una función que reciba tres argumentos de tipo entero, a, b y c. La función
deberá ordenarlos de menor a mayor. Al finalizar la función, a deberá tener el valor
menor y c el valor mayor. Utilizar paso de argumentos por referencia. Realiza un
programa que utilice dicha función e imprima los valores de a, b y c antes y después de la llamada a la función */

Código:

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

void pro(int *a, int *b , int *c);
int aa, bb, cc, *apuntador1, *apuntador2, *apuntador3;;
main(){
apuntador1 =&aa;
apuntador2 =&bb;
apuntador3 =&cc;
    printf("\nIntroduce el valor de a:");
scanf("%d",&aa);
printf("Introduce el valor de b:");
scanf("%d",&bb);
printf("Introduce el valor de c:");
scanf("%d",&cc);

printf("\na=%d, b=%d, c=%d",aa, bb, cc);

pro(&aa,&bb,&cc);

printf("\na=%d, b=%d, c=%d",*apuntador1,*apuntador2,*apuntador3);

}
void pro(int *a, int *b, int *c){//funcion que ordena  los números ingresados por el usuario de mayor a menor


if(*a<*b && *b<*c){
   
}else if (*a<*c && *c<*b){

}else if (*b<*a && *a<*c){

}else if (*b<*c && *c<*a){

}else if (*c<*a&& *a<*b){

}else if (*c<*b&& *b<*a){

}
}

6
El juego funciona bien pero cuando le digo a la maquina que ya no quiero jugar, el bucle no se rompe y comienza de nuevo el juego, que condición puedo poner para que pare?


Código: [Seleccionar]
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<unistd.h>
#include<ctype.h> //Necesaria para usar la función de cambio de tipos: toupper();

int hacerTirada();
int seguirJugando();
void juegaDados();


main(){
char continuar;
do{
juegaDados();

 }while(continuar =='S');
 
}

int hacerTirada(){ //Tirar dados
char tirar;

do{
puts("¿Realizar tirada? (S/N)");
scanf("%c",&tirar);
getchar();
tirar = toupper(tirar); // Convierte a mayúsculas el contenido previo de tirar
switch(tirar){
case 'S': puts("Iniciando un nuevo juego...\n");
break;
case 'N': puts("Esta bien, tomate un tiempo para retomar un nuevo juego...\n");
break;
default: puts("No entendi tu respuesta! Intenta de nuevo.\n");
break;
sleep(2);
}
}while(tirar !='S'); // Mientras la respuesta no sea "S"
}
int seguirJugando(){ //Continuar o cerrar el juego
char continuar;


puts("¿Continuar jugando? (S/N)\n");
scanf("%c",&continuar);
continuar = toupper(continuar); // Convierte a mayúsculas el contenido previo de continuar
getchar();
switch(continuar){
case 'S': puts("Volver a jugar\n");
break;
case 'N': puts("Esta bien, pero se que volveras, hasta pronto!...\n");
        break;

default: puts("No entendi tu respuesta asi que seguiremos jugando!.\n");
continuar = 'S'; // Asigna arbitrariamente el valor de seguir jugando
break;
}
}
void juegaDados(){ //Cuerpo del juego
int jugador, maquina;
char tirar, continuar;

srand(time(0));
hacerTirada();////////////////////////
jugador = rand() % 6 + 1;
maquina = rand() % 6 + 1;

puts("Turno del usuario: tirando dados..."); //turno del usuario
sleep(3); //Tiempo de espera
printf("Valor de la tirada del jugador: %i\n",jugador);
puts("Turno de la maquina: tirando dados..."); //turno de la maquina
sleep(5);
printf("Valor de la tirada de la maquina: %i\n",maquina);
if(jugador > maquina){
printf("\nG a n a s t e !\n");
}
else if (jugador == maquina){
printf("\nE m p a t e !\n");
}else{
printf("\nP e r d i s t e !\n");
}
do{
seguirJugando()////////////////////////////
}while(continuar == 'S'); // Mientras la respuesta a continuar sea "S"
}

7
Hola! tengo unos problemas en la parte final del programa porque se imprimen los mensajes del final if y del while juntos ademas, en que me equivoque o que me hace falta?

El enunciado es el siguiente:

<<Realizar un programa que permita al usuario adivinar una palabra secreta, solicitando 10 letras máximo para adivinar la palabra. Mostrar la ubicación de las letras en la palabra cada vez que la letra sea parte de la palabra.>>

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

main(){
char palabra[10]="escuela"; //declaramos variables
char letras[10];
char respuesta[10]={};
char letra, opcion;
char letra2="s";
int i=0, intentos=10, contador=0;


for( i=0; i<strlen(palabra); i++){
letras[i]='_';
}
    do {
    fflush(stdin);
    printf("\nInserta una letra: ");
    scanf("%c",&letra);
   
    for( i=0; i<strlen(palabra); i++){
    if(letra==palabra[i]){
    letras[i]=letra;
}
}

for(i=0; i<strlen(letras); i++){
printf("%c", letras[i]);

}
printf("\n¿Ya sabes la respuesta?: s/n: ");
scanf("%c",&opcion);
contador++;

if (opcion==letra2){
printf("\nEscribe la respuesta aqui: ");
scanf("%s",&respuesta[10]);
palabra[10]=respuesta[10];

printf("\nADIVINASTE");
} break;



} while(intentos==10);
      printf("\nLa palabra secreta es: escuela");
      printf("\n\n¡SUERTE PARA LA PROXIMA!");

}

8
Hola, quiero sumar los números que el usuario ingrese, se rompe el ciclo pero no suma nada ¿Qué puedo hacer?

#include<stdio.h>


main(){
   
   float precio=0, total=0;
   
   printf("Ingresa el precio:");
   scanf("%f", &precio);
   
    while (precio>0 ){   
   printf("Ingresa el precio:");
   scanf("%f", &precio);
   }
   total=+precio;
      
   printf("\nLa compra total es de:%.2f", total);
}




9
Hola a todos. Estoy con C++ y quiero imprimir valor1 % valor2 = resultado

   printf("\n %d %  %d= %d", valor1, valor2, modulo);

pero si pongo % entre esos %d y %d sale esto

valor1 %d = resultado
 
¿Qué puedo poner para que no salga así y si salga el valor2?

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".