El programa deja de funcionar

Iniciado por Naimaderis, 11 Diciembre 2016, 20:07 PM

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

Naimaderis

Estaba tratando de hacer una calculadora sencilla, pero por alguna razon el programa deja de funciones.
¿Alguien tiene alguna idea de porque?



MOD:Imagen adaptada a lo permitido

ivancea96

scanf("%d", cantidadnumerossumar);
Los argumentos de scanf son direcciones de memoria donde vas a almacenar los datos.

Por tanto, para pasarle las direcciones, usa el operador "&":
scanf("%d", &cantidadnumerossumar);

El error es que interpretaba los datos que tenía el int cantidadnumerossimar como si fuera una dirección, y trató de escribir en ella, lo que generó el error.

Naimaderis

Muchas gracias!!!!, sabia sobre eso, pero no me di cuenta que era ese el error.

engel lex

no se que compilador usas... pero te está dejando pasar muchos errores, las funciones no tienen tipo (main debe ser siempre int), sumar creo que debería ser void según lo que quieras hacer... te está permitiendo compilar sin prototipos y llamar a la función...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Naimaderis

#4
Utilizo code::blocks. Ahora que lo dices, el programa compila de maravilla, en el libro que estoy usando, aun no he llegado a la parte de tipos de funciones. Pero he visto que ponen main(void) o cosas asi.
En php, siempre ponia funcion(y aca adentro los parametros), estoy ansioso de ver como funciona aca.


MOD:Imagen adaptada a lo permitido (Por 2da vez)

engel lex

#5
por que empiezas contador en 1 en la linea 24? al igual que ahí con ese +1 se te va a desbordar la variable

al igual que no entiendo abajo la razón del operador ternario (y no se si entiendes como funciona, porque a mucha gente se le complica)  y tambien un j empezando en


Citarno se que compilador usas...
CitarUtilizo code::blocks.

code::blocks es el ide, no el compilador... a mi ni por accidente me deja compilar eso XD

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

ivancea96

Cita de: engel lex en 12 Diciembre 2016, 05:26 AM
por que empiezas contador en 1 en la linea 24? al igual que ahí con ese +1 se te va a desbordar la variable

al igual que no entiendo abajo la razón del operador ternario (y no se si entiendes como funciona, porque a mucha gente se le complica)  y tambien un j empezando en


code::blocks es el ide, no el compilador... a mi ni por accidente me deja compilar eso XD



Este hermoso código compila en algunos compiladores de C (ahora estoy usando GCC):
main(){
func(5);
}

func(n){
printf("%i", n);
}


Se toma el uso de las funciones como una "declaracióm implícita".
Eso sí, a la hora de linkear, tira error si no encuentra las funciones.

Pero como dice engel, Naimaderis, las funciones tienen un retorno siempre (el del main es int), y antes de usar una función, el compilador debe conocerla:

#include <stdio.h>

void func(int);

int main(){
func(5);
}

void func(int n){
printf("%i", n);
}

O
#include <stdio.h>

void func(int n){
printf("%i", n);
}

int main(){
func(5);
}

Naimaderis

#7
Ivan, estuve viendo tu blog, cuando avance un poco mas, creo que me va a servir bastante

Cita de: engel lex en 12 Diciembre 2016, 05:26 AM
por que empiezas contador en 1 en la linea 24? al igual que ahí con ese +1 se te va a desbordar la variable

No entiendo muy bien el concepto de variable desbordada, me suena a que se pasa de la capacidad, ¿Podrias explicarlo? Gracias

Podria cambiar la linea 24, pero entonces tengo que cambiar la linea 33 y 36. No se si sera mejor asi entonces:


   for (contador = 0; contador < cantidadnumerossumar; contador ++ )

   for (j = 0; j < cantidadnumerossumar; j++ ) {

           (j < cantidadnumerossumar - 1) ? printf("%d + ",numerosasumar[j]) : printf(" %d = %d",numerosasumar[j], total);



Igualmente, estoy agregando un -1 abajo

Cita de: engel lex en 12 Diciembre 2016, 05:26 AM
al igual que no entiendo abajo la razón del operador ternario (y no se si entiendes como funciona, porque a mucha gente se le complica)  y tambien un j empezando en

Segun tengo entendido es como un if con else, no?. Me refiero:

Condicion ? Si se cumple pasa esto : Si no, pasa esto


Cita de: engel lex en 12 Diciembre 2016, 05:26 AM

code::blocks es el ide, no el compilador... a mi ni por accidente me deja compilar eso XD


Perdon, utilizo gnu gcc compiler. Espero adaptar bien la imagen esta vez:




engel lex

los vectores empiezan en 0 siempre


si declaran por ejemplo int a[4]


a
|_|_|_|_|
0 1 2 3

a[1]
|_|X|_|_|
0 1 2 3

a[4]
|_|_|_|_|???
0 1 2 3


si haces a[4] el intentará acceder a la memoria ram en posición a + 4*size(int) y normalmente retorna "segment fault"

y si el operador ternario lo comprendes bien...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Naimaderis

#9
Cita de: engel lex en 11 Diciembre 2016, 20:50 PM
no se que compilador usas... pero te está dejando pasar muchos errores, las funciones no tienen tipo (main debe ser siempre int), sumar creo que debería ser void según lo que quieras hacer... te está permitiendo compilar sin prototipos y llamar a la función...
Ya llegue al capitulo de funciones y prototipo, y me encontre con algo interesante:

¿A esto te referias? ¿Deberia actualizar el compilador? Es raro que sea vieja, lo descargue hace poco

MOD:Imagen adaptada a lo permitido (Por 3ra vez). Lee las reglas. El tamaño máximo es de 800x600.