| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
eduardomasegosa
Registrado: 30 Sep 2007 Mensajes: 3
| Publicado: 27/10/2007 2:06 am | | | Título: URGENTISIMO!! Un problema sencillo |
| Buenas tengo un problema tonto. Acabo de aprender las funciones y procedimientos y todavia no me aclaro mucho al declarar si es un asterisco o que.
y este codigo no me funciona y no se porque, si lo ejecutais vereis donde esta el fallo porque lo he marcado con printf
GRACIAS espero que me podais decir algo antes de mañana, porque tengo que entregarlo el domingo antes de las 12 de la noche
#include <stdio.h>
/*DECLARACION DE CONSTANTES*/
/*DECLARACION DE FUNCIONES*/
void leeDatos (int *num, char *caract); void escribeCaract (int num, int caract);
/*FUNCION PRINCIPAL*/ main() { int num=0; char caract=0;
leeDatos(&num, &caract); printf("caracter %c y veces %d en main \n", caract, num); escribeCaract(num, caract);
}
/*DEFINICION DE FUNCIONES*/ void leeDatos(int *num, char *caract) { int okCaract=0;
while (okCaract!=1) { printf("Introduzca numero de veces que quiere que se repita "); scanf("%d", &num); if (num<0 || num>80) { printf("Numero no valido \n Vuelva a probar \n"); } else { okCaract=1; } }
printf("Que caracter es el que desea que se repita "); scanf("\n%c", &caract); printf("caracter %c y veces %d en leedatos \n", caract, num); }
void escribeCaract ( int num, int caract) { printf("caracter %c y veces %d en escribeDAtos \n", caract, num); int cont;
for(cont=0; cont<num; cont=0) { printf("%c", caract); } printf("\n");
system("PAUSE"); } |
| | Volver arriba | |  | digies
Registrado: 18 Nov 2005 Mensajes: 240 Ubicación: Cono Sur
| Publicado: 27/10/2007 7:57 am | | | Título: |
| Hola
Por lo visto tu código tiene varios errores de conceptos. A continuación te indico los mismos:
1- La función principal main debe retornar un tipo de dato integer, con su correspondiente parámetro void: int main(void) {...}
2- Por lo tanto, para que el programa termine en forma exitosa debes colocar su correspondiente macro: return EXIT_SUCCESS; Luego debes usar el archivo de cabecera stdlib.h
3- Al final de cada uno de los procedimientos no agregas la instrucción de retorno a la función principal. return;
4- Si recién estás aprendiendo a usar funciones y procedimientos en C, lo mejor es que primero aprendas bien el uso de estas y sus conceptos fundamentales, sin utilizar punteros como argumentos -por el momento-.
5- Defines distintos tipos de datos para una misma variable en uso.
Una solución rápida sería el siguiente:
| Código: | #include <stdio.h> #include <stdlib.h>
void leeDatos(); void escribeCaract(int n1, int c1);
int main(void) { leeDatos(); system("PAUSE"); return EXIT_SUCCESS; }
void leeDatos() { int n, ch, a=0; char c; while(!a) { printf("Introduzca numero de veces que quiere que se repita: "); scanf("%d", &n); while((ch=fgetc(stdin))!=EOF && ch!='\n'); if(n<1 || n>10) printf("Numero no valido \n Vuelva a probar \n"); else a=1; } printf("Que caracter es el que desea que se repita: "); scanf("%c", &c); printf("Caracter '%c' y veces %d\n", c, n); escribeCaract(n, c); return; }
void escribeCaract (int n1, int c1) { int cont; puts("Lista:"); for(cont=0; cont<n1; cont++) printf("%c ", c1); puts("\n\n"); return; }
|
Un saludo |
| | Volver arriba | |  | eduardomasegosa
Registrado: 30 Sep 2007 Mensajes: 3
| Publicado: 27/10/2007 8:22 am | | | Título: Me pasa en todas las funciones y procedimientos mal |
| nose como explicartelo, pero yo estoy dando en un curso de grado superior lenguaje c, y va explicando poco a poco y lo que tu has dicho no lo ha dado todavia, y se puede hacer sin todo eso.
agradezco tu ayuda de verdad, pero el fallo que yo digo no es ese.
yo no se como hacer para declarar la funcion y marcar cuales son de entrada y cuales entradaysalida |
| | Volver arriba | |  | | jonan_1988
Registrado: 12 Abr 2005 Mensajes: 48
| Publicado: 27/10/2007 12:10 pm | | | Título: |
| | Código: | void function( int a; int* b ) { a = 1; *b = 1; }
int main ( ) { int a, b; int *p;
a=0; // "a" se pone a cero b=0; // "b" se pone a cero p = &b; // "p" apunta a "b"
function (a, p);
// En la función "a" es una entrada y "b" es una entrada/salida // así que aquí "a" seguirá valiendo 0 pero "b" valdrá 1.
} |
Creo que esta era tu duda  _________________ Diario de un pre-informático |
| | Volver arriba | |  | eduardomasegosa
Registrado: 30 Sep 2007 Mensajes: 3
| Publicado: 28/10/2007 2:34 am | | | Título: Ya se lo k es! |
| No, pero ya se lo k era!!!
Es en la definicion de las funciones las variables de entrada/salida les falta el (asterisco) *variable.
gracias por preocuparte en intentar resolverlo! soys geniales! |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |