2009-11-16 34 views
6

estoy en busca de una serie de problemas C (con soluciones) que puedo usar para construir mis habilidades C. Ya entiendo los conceptos básicos del lenguaje, la sintaxis y la semántica. Estoy buscando una serie de problemas que me ayudarán a perfeccionar mis habilidades, no una serie de preguntas simples que verías en una clase introductoria de programación.C Problemas y soluciones

+0

@ James Eso debería ser una respuesta: P 1 –

+0

@Seth: supongo que debería. Fijo. :-) –

+0

OP: actualizó la pregunta original, con una respuesta. –

Respuesta

10

Usted puede tratar de resolver algunos de los problemas en Project Euler. Los primeros son bastante simples, pero son muy difíciles muy rápidamente. Creo que es muy divertido intentar encontrar el código más corto o el código más optimizado para calcular los resultados (aunque generalmente utilizo C++ o Python, no C).

Una de las ventajas de los problemas del Proyecto Euler tienen es que no son sólo el lenguaje centradas; son problemas que realmente te hacen reflexionar sobre cómo desarrollar una solución elegante para problemas difíciles.

+0

+1 por la buena sugerencia. Sin embargo, Project Euler no es lo que el OP está buscando, porque quiere problemas con sus soluciones, y PE no muestra la solución hasta que haya resuelto el problema usted mismo. –

+0

Bueno, Project Euler le dice si _su_ solución es correcta, y si busca en Google, encontrará soluciones para muchos, si no la mayoría, de los problemas en una variedad de idiomas. –

5

bibliotecas que implementan Construir sofisticada data structures, al igual que los árboles binarios, diccionarios, y tal.

10

Y no se olvide code-golf.

Es probable que desee responder únicamente a los desafíos (preguntas) que tienen al menos 10 votos hacia arriba.

+0

+1, aunque tengo la tentación de borrar la palabra 'Ping' en mi polvoriento conjunto de clubes reales y reemplazarlo por 'Perl'. Aún así, es divertido trabajar en los problemas con C, especialmente los láseres. –

+0

Correcto, en SO en particular, code-golf es más que solo programas cortos, también es un foro general y un lugar para que todos puedan mejorar sus habilidades. – DigitalRoss

4

Escriba un compilador. No necesita ser complejo o incluso completo: puede crear un lenguaje simple (un subconjunto de lisp?) Y luego escribir un lexer para ello. Asegúrese de comenzar estableciendo la gramática formal. Tocará la administración de memoria, aritmética de puntero y otras cosas ordenadas de C.

he aprendido mucho acerca de los autómatas y compilador de diseño escribiendo un simple analizador YAML en C++.

+1

Eso es casi tan bueno como aprender C al escribir un sistema operativo. Claro que lo hice para aprender C, pero no recomendaría un dolor tan extremo a nadie (por supuesto, tampoco conocía toda la semántica y algo de C cuando comencé). Cualquier gran proyecto complejo te ayudará a aprender C aunque – Earlz

+0

No, mi punto es comenzar algo. Estoy interesado en compiladores, analizadores, intérpretes y demás. SO, juegos, editores de texto: todos pueden ser grandes y desalentadores. El truco es comenzar. Hazlo tan pequeño como puedas, incluso un subcomponente incompleto de un gran poryecto. Si estás tratando con lo que te fascina, lo harás bien, e incluso te divertirás. – wilhelmtell

6
2

Pruebe el libro de Dennis Ritchie en el lenguaje de programación C. El libro tiene muy buenos problemas y también la lectura es una alegría :) Para problemas más difíciles se puede ir a Bitwise Programming contest

1

Ruby Quiz tiene 156 problemas con las soluciones. Pero en Ruby, no en C. Consulte la lista de correo de ruby-lang para obtener más información después de que James dejara de ser Ruby quiz master.

0

Práctica code Katas, el idioma no importa mucho. Tratar de resolver los Katas que ya has hecho con otro idioma suele ser bastante eficiente para aprender un nuevo idioma.

0

Siempre se puede visitar Freshmeat, encontrar algunos proyectos que le interesen y buscar en su gestor de fallos. Toma el código e intenta solucionar algunos de los problemas.

Esto ayuda código abierto mientras que también ayuda a acostumbrarse a saltar al código de otra persona con gafas de depuración sucesivamente.

Cuestiones relacionadas