Curso completo de programación con lenguaje C

Silvio_Dante

#630 Eso ya lo había probado por si ponía mal la ruta en la consola, le daba a run desde el mismo programa donde escribía el código pero se abre la consola negra con la _ parpadeando. Mañana voy estar en un ordenador diferente, ya os contare si lo consigo jajaja

22 días después
m4andg4

os quiero preguntar una cosilla, a grandes rasgos, se bastante C o sabía (llevaba mucho tiempo sin tocarlo) pero llevo horas dándole vueltas a una misma cosa y estoy parado en algo que seguramente sea una gilipoyez. Venía a pediros que me echarais una mano (no es urgente ni nada, es por trastear).

Os lo explico un poco por lo alto: quiero hacer un sumador de "Enteros largos" (el), para lo cual voy a meter cada uno de los dígitos del entero (que previamente introduciré por stdin) en strings, quedando cada dígito como un caracter (función char * get_el()).

El problema viene cuando en main() haciendo pruebas creo un array de strings en el cual usando la función get_el() meto 2, el puts me muestra bien el de la segunda posición pero no el de la primera como podeis ver en la consola. ¿porque cojones el segundo si, y el primero no??!?!?!?

gracias y perdonad que me explique como el culo

2 respuestas
iSecOne

#632 no puedes hacer un for y vas printeando cada posición?

1 respuesta
kNG17

#632 no crees que nos sería más facil ayudarte si copiases el código en lugar de hacer una captura? yo no soy un genio en C pero podría hacer unas pruebas si tuviese el código a mano xD

Por otro lado te diría que empezases a usar mallocs, eso de hacerte una variable local y devolver el puntero no tiene muy buena pinta.

1 respuesta
m4andg4

He estado sin tocarlo desde entonces, y hoy un poco más seriamente me he puesto a corregir chuminadas y a darle un poco más de sentido y legibilidad desde el principio.

#633 No, al final lo he resuelto haciendo lo que me dice #634. La cosa es que pudiera usar el puts() que a fin de cuentas viene a ser un for que recorre el string char por char.

Se quedaría todo tal que así y funcionando:

codigo inside
1 respuesta
cabron

#635

La etiqueta code se rompe si editas haciendo doble click en el post, utiliza el formulario completo de edición y vuelve a salir bien.

1 1 respuesta
m4andg4

#636 Muchisimas gracias, no tenía ni idea

13 días después
jamontenegro

¿Sabríais hacer este ejercicio? yo llevo varios dias dándole vueltas pero no consigo sacarlo...

spoiler
2 respuestas
r2d2rigo

#638 strtok() para partir la frase leida en palabras sueltas, luego iteras por el array de palabras y calculas lo que te piden.

1 1 respuesta
jamontenegro

#639 se supone que no debo usar esa funcion porque no la he dado xD

3 respuestas
Martita-

#640
Si no puedes usarla, buscas espacios recorriendo con el for.

Todo char que encuentres antes de un espacio, lo concatenas en un string, y cuando encuentras un espacio, lo metes en el vector, y asi con todas las palabras.

Es lo que se me ocurre si no puedes usar ninguna funcion para partir las cadenas.

1 1 respuesta
B

#640 hazlo como deberias de hacerlo, como te comenta #641 y con strtok(). no te ciñas unicamente a lo que das en clase.

1 respuesta
Intrak

#640

¿Te dicen que no uses cosas en clase solo porque no las hayáis visto?

iSecOne

Ni caso, si no lo haces como dice el profe cae un 0. Aprende a hacerlo como te dicen por aquí, que fijo es la mejor opción, pero para entregarlo hazlo utilizando lo que diste en clase. Aunque claro, todo depende del profesor, igual le mola que uséis cosas nuevas que hayáis buscado por vuestro cuenta, pero yo no me la jugaría...

1 respuesta
B

#644 es hablarlo. mis profesores siempre han dicho "yo se hacerlo asi, si conseguis hacerlo de otra forma, se evalua igual. lo que busco es que me deis el resultado".

vamos, que te podias buscar la vida como querias, siempre dentro de unos margenes. esto hace que el estudiante quiera o no aprenda a buscar por su propia cuenta y dejar atras la epoca de darle todo mascadito y tragar-tragar para un examen.

1 respuesta
iSecOne

#645 Claro, básicamente es mandarle un correo el profesor y que le saque de dudas. Los que te dejan buscarte la vida son los buenos :)

1
jamontenegro

#642 simplemente quiero hacerlo sin usar la funcion, no solo porque no la hayamos visto en clase...

B

#638

A ver, si no quieres hacerlo usando strok, intenta implementar esa funcion. Dado un string y un delimitador " ", que cuente 1 cada vez que encuentra una letra, que comience en 1 y añada 1 cuando encuentre cada delimitador y luego ya tienes todo lo necesario. Palabras, letras por palabra y puedes hacer todo lo que quieras.

Para todo lo demás flex+bison, te haces un autómata LALR(1) y tiras millas xD.

Mirtor

Estaba a punto de dropear la asignatura de Programación y acabo de descubrir este hilo y pinta a salvada de vida xDDDD

Hace poco que dimos los punteros y ahora estoy intentando hacer algunos ejercicios algo tochos. Si encuentro la motivación para terminar de implementarlos probablemente postee alguna duda porque no me aclaro muy bien con el pase de parámetros de una función a otra.

14 días después
Camp1

Alguien sabe porque el strcmp me devuelve siempre -1 ? Cuando estoy comparando dos nicks iguales, por ejemplo "Pepito" con "Pepito" me sigue devolviendo -1.

En otras funciones del código me pasa exactamente lo mismo, si comparo con una variable de la struc me devuelve siempre el -1 , pero por ejemplo si comparo dos variables introducidas por pantalla si me funciona y me devuelve 0.

int comparar_nick(char *nuevonick){

  struct _usuario *auxiliar;

  auxiliar = primerousuario;
  while (auxiliar!=NULL) {

        if( strcmp(auxiliar->nick,nuevonick) == 0 ) return 1;  

        auxiliar = auxiliar->siguiente;
  }

  return 0;
}

EDIT: El problema era que el nuevonick lo estaba leyendo con fgets, lo cambie a gets y listo.

2 respuestas
gonya707

#650 probablemente el caracter '\0' jodiendo por ahi

1
14 días después
m4andg4

#650 huye del gets(). Como práctica es mucho más limpia y segura el fgets()

1
B

#141 pa cuando?

1 respuesta
gonya707

#653 hice los dos primeros capis y me desmotive xD Principalmente porque nadie pasaba de los primeros temas aqui

1 respuesta
B

#654 si mal no recuerdo me quede en el cap8 :qq:

prometo acabarlo algun dia, pero python masmola.

13 días después
Vain92

Coño, acabo de descubrir esto, me quedo por aquí que quiero empezar en la programación y colegas me han recomendado empezar por C.

24 días después
plaken

Buenas a todos,
Con el comienzo del verano y el fin de las clases, me he puesto a darle duro a este curso, y la verdad es que no puedo estar más satisfecho.

Ahora mismo voy por el tema9, con casi todos los ejercicios hechos y espero terminarlo en las próximas semanas.

Grandísimo aporte, muchas gracias.

1 respuesta
gonya707

#657 me alegro que te guste ^^

plaken

Primera duda importante que no me deja continuar...
En el ejercicio 2 del tema 9, mediante un fscanf de un string, no consigo que el programa me lea toda la frase que le estoy metiendo, sino simplemente la primera palabra. Por ejemplo, cuando meto la frase "Hola que tal", el programa solo lee "Hola".
Vamos, pienso yo que el error esta en alguna declaración en el fscanf...

Aquí dejo mi ejercicio tal cual.

spoiler

Muchas gracias

2 respuestas
gonya707

No estoy seguro de que sea eso, pero estas declarando primero unos punteros y luego unos arrays para terminar asignando los arrays al puntero.

No es necesario, si declaras un array, el nombre a secas ya es un puntero a la primera posicion

Vamos, en vez de

    char* f1;
char* f2;
char frase1[LONG];
char frase2[LONG];
f1=&frase1[LONG];
f2=&frase2[LONG];

Pon simplemente

    char f1[LONG];
char f2[LONG];