Problemas C de funciones , recursividad

Iniciado por Ateius, 28 Febrero 2012, 05:10 AM

0 Miembros y 1 Visitante están viendo este tema.

Ateius

Disculpen necesito ayuda en estos problemas:
1.-El problema debe de decirme si un punto dado por teclado se encuentra dentro de una región conocida como Copo de nieve de Koch , para esto el programa me pedira como datos el nivel , la longitud , la coordenada x y la coordenada y del punto , y me mostrara como resultado Dentro o Fuera.
2.-Este otro problema me va pedir un numero n el cual va a hacer q el programa me pida 2*n numeros escritos en el idioma "X" , en el cual:
"ab pq"=0,"cd"=1,"ef"=2,"gh"=3,"ij"=4,"kl"=5,"mn"=6.
Una vez escrito el numero en este idioma multiplicara en base 7 mostrandome la operacion y por ultimo me devolvera el resultado en el idoma "X".
ejemplo:
Entrada
n:2
cd ef
gh
ef ij kl
mn ab pq gh
Salida
Caso#1
12*
3
--
36
--
36
Caso#2
     245*
     603
      ---
   1101
       0
2202 
-----
221301

Akai

aquí no se hacen tareas. Léete las normas del subforo:

http://foro.elhacker.net/programacion_cc/reglas_del_subforo-t251603.0.html

Si realmente tienes un mínimo de código hecho, ponlo aquí y comenta tus dudas, entonces veremos en qué se puede ayudar.

Ateius

No importa ya resolvi los problemas , coo no tenia tiempo para hacerlos pense q capaz podian hecharme una manito con estos problemas .
Tengo una duda :
Cuando realizo un vector de cadenas .

#include<stdio.h>
#include<stdlib.h>
#define MAXLON 50

main(){
int i;
char a[4][MAXLON];
for(i=0;i<4;i++){
printf("ingresa la cadena");
gets(a);}
system("pause");
}

En este programa si corre bien:
Pero en este no se q pasa.
#include<stdio.h>
#include<stdlib.h>
#define MAXLON 50
#define MAX 10
main(){
int i,n;
char a[MAX][MAXLON];
scanf("%d",&n);
for(i=0;i<n;i++){
printf("ingresa la cadena");
gets(a);}
system("pause");
}

No entiendo xq no me pide el valor de la primera cadena.

rir3760

Eso se debe al uso intercalado de "scanf" y "gets" ya que la primera ignora el espacio blanco (con la mayoría de los especificadores) mientras que la segunda no.

Supongamos que tecleas:
2{ENTER}
Ese '2' se procesa y el resultado se almacena en la variable "n" pero el avance de linea se queda en el bufer de la entrada estándar. A continuación la función "gets" (es siempre mejor utilizar "fgets" en su lugar) se topa con el mencionado y lo considera una linea en blanco.

Para evitar eso se debe eliminar el resto de la linea justo después de la llamada a "scanf", por ejemplo:
int ch;

/* ... */

scanf("%d",&n);
/* Descartamos el resto de la linea */
while ((ch = getchar()) != EOF && ch != '\n')
   ;
for (i = 0; i < n; i++){
   printf("ingresa la cadena");
   gets(a[i]);
}


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

Ateius

gracias por confirmar lo q había encontrado buscando en google.

Xandrete

Cita de: Ateius en  1 Marzo 2012, 05:29 AM
gracias por confirmar lo q había encontrado buscando en google.

LOL. Eso sonó un poco mordaz, xDDD