Error con tipo de datos (creo)

Maaarc

Buenas, mirad esta todo 'acabado' ( me faltaría salir del while(1) pero eso da igual lo hago en un momento) el caso esta en que los vectores, se rellenan con numeros que entro por teclado así:
1 2 0 9 7 5 por ejemplo, y luego con punteros y vectores se cambian y quiero que salga el resultado también en números y no hay manera xD

// Vector, funcion array

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>


/*Entrada de dades */
int e_Lectura=0;

/*Vectors*/
int vector1[6];
int x=0; // contador en el vector1
int vector2[6];
int z=0; // contador en el vector2

/*Control */
int c_a=0; //A pitjada?

/*Funcio*/
void funcio (int *);



int main(){
    printf("Entra sis numeros entre el 0 i el 9:nn");


/* Genero el primer vector */

for(x=0;x<=5;x++){
    e_Lectura=getch();
    if(e_Lectura >= '0' && e_Lectura <= '9' ){
        vector1[x]=e_Lectura;
        }
    else x--;
    }

/* Coloco les dades en el vector, vector inicial */
for(x=0;x<=5;x++) printf("%ct",vector1[x]);



/*Entro en un while(1)*/
printf("nnTecleja 'a' o 'A' per continuar:nn");
while(1){
    c_a=getche();
    if(c_a=='a' || c_a=='A'){
        funcio(&vector1);    
} else printf("b"); } getchar(); } /* Genero el V2 a partir dels valors del V1 */ void funcio (int *vector1){
int *p = vector1; //El punter p apunta a les posicions del vector1 putchar('n'); vector2[0]=p[0]; vector2[1]=p[1]; vector2[2]=(p[2]+p[3]); vector2[3]=(p[3]+p[4]); vector2[4]=(p[4]+p[5]); vector2[5]=p[5]; printf("nnVector 2 generat a partir del Vector1:nn"); for(z=0;z<=5;z++) printf("%ct",vector2[z]); }
Maaarc

// Fixed

Gracias por entrar de todos modos cualquier sugerencia es bienvenida.

PandragoQ

En la linea 68, sustituye %ct por %d... quieres pintar un entero, no un caracter... y, por los pies descalzos de Cristo, no llames a una funcion "funcio", dale un nombre coherente con lo que hace la funcion "pinta_vector" por ejemplo.

1 respuesta
jaavi

mejora los nombres de las funciones y algun comentario sobra un poco por explicar algo que se ve a simple vista por lo demas mas o menos bien aparte del error de la linea 68

1 respuesta
Maaarc
#include <stdio.h>
#include <stdlib.h>

/*Entrada de dades */
int e_Lectura=0;

/*Vectors*/
int vector[6]={-0,-0,-0,-0,-0,-0};
int x=0; // contador en el vector1
int vector2[6]={-0,-0,-0,-0,-0,-0};
int z=0; // contador en el vector2

/*Control */
int c_a=0; //A pitjada?

/*Funcio*/
void f_SumaVector (int *);



int main(){
    printf("Entra sis numeros entre el 0 i el 9:\n\n");


/* Genero el primer vector */

for(x=0;x<=5;x++){
    e_Lectura=getch();
    if(e_Lectura >= '0' && e_Lectura <= '9' ){
        vector[x]=e_Lectura-'0'; //Así se pasa a valor numerico
        }
    else x--;
    }

/* Coloco les dades en el vector, vector inicial */
for(x=0;x<=5;x++) printf("%i\t",vector[x]);



/*Entro en un while(1)*/
printf("\n\nTecleja 'a' o 'A' per continuar:\n\n");
while(1){
    c_a=getche();
    if(c_a=='a' || c_a=='A'){
        f_SumaVector(&vector);    
} else printf("\b"); } getchar(); } /* Genero el V2 a partir dels valors del V1 */ void f_SumaVector(int *vector){
int *p = vector; //El punter p apunta a les posicions del vector1 putchar('\n'); vector2[0]=p[0]; vector2[1]=p[1]; vector2[2]=(p[2]+p[3]); vector2[3]=(p[3]+p[4]); vector2[4]=(p[4]+p[5]); vector2[5]=p[5]; printf("\n\nVector 2 generat a partir del Vector1:\n\n"); for(z=0;z<=5;z++) printf("%i\t",vector2[z]); }

#3
#4

Ahora como lo veis?

1 respuesta
Thanat0s

Madre mía del amor hermoso... un trocito de mi corazón se ha roto al ver la línea 32.

Jamás en la vida se debe de variar el valor de una variable usada e incrementada en un for.
En tu caso la x.

Queda feísimo, para algo existe el while.

Y además, eso dependiendo del compilador y de las flags de compilación compilará o no.
En tu caso ha pasado, pero en otro momento/lugar quizás no tengas tanta suerte.

2 2 respuestas
PandragoQ

#6 i know that feeling, bro! ademas, es la primera vez que veo a alguien usar x como variable en un for... la norma que marca la tradicion, es usar i, j, k

#5 ademas, jamas se debe declarar la variable que usas como contador en un for, fuera del ambito del propio for... es decir, en vez de declararla en la linea 9, y luego usarla en la 27, elimina la linea 9, y sustituye la 27 por:

for(int x;x<5;x++) // Os juro que me ha costado escribir la x...

Con esto, tambien te ahorras la z :P

2 1 respuesta
Maaarc

#6 #7 Gracias por los consejos, lo mejoraré, en lo de x-- es una chapuza porque iba rápido y fue lo primero que se me ocurrió que funcionaba.

En cuanto lo de i,j,k no lo sabia ni tampoco lo de hacer el int dentro del for xD

Usuarios habituales

  • Maaarc
  • PandragoQ
  • Thanat0s
  • jaavi