Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - C--

#1
Programación C/C++ / [C++] Error stray 354
24 Noviembre 2012, 09:01 AM
Hola de nuevo.

He aquí otra de mis dudas :P

Primero les mostraré la parte del código que me esta dando problemas (todo el resto funciona bien):

void mostrar(){

   //imagen inicial
   cout << "Imagen Inicial\n";
   for(int i=0; i<filas; i++){
       cout << endl;
       for(int j=0; j<columnas; j++){
           if(j<columnas-1)
               cout << pixeles[i][j].getRojo() << "-" << pixeles[i][j].getVerde() << "-" << pìxeles[i][j].getAzul() << " ";
           else
               cout << pixeles[i][j].getRojo() << "-" << pixeles[i][j].getVerde() << "-" << pìxeles[i][j].getAzul() << "\n";
       }
   }
   cout << endl;
   cout << endl;

   //imagen modificada
   cout << "Imagen Modificada" << endl;
   for(int i=0; i<filas; i++){
       cout << endl;
       for(int j=0; j<columnas; j++){
           if(j<columnas-1)
               cout << pixeles2[i][j].getRojo() << "-" << pixeles2[i][j].getVerde() << "-" << pìxeles2[i][j].getAzul() << " ";
           else
               cout << pixeles2[i][j].getRojo() << "-" << pixeles2[i][j].getVerde() << "-" << pìxeles2[i][j].getAzul() << "\n";
       }
   }
   cout << endl;
   cout << endl;

}

(Donde, linea 311: cout << pixeles[ i ][j].getRojo() << "-" << pixeles[ i ][j].getVerde() << "-" << pìxeles[j].getAzul() << " ";)


Y he aquí el error (click para verlo completo):



Cabe mencionar además que si por ejemplo acorto las "concatenaciones" de cout que dan problemas, de la siguiente forma, por ejemplo:

cout << pixeles[i][j].getRojo() << "-";

No me da error, compila todo bien, aunque si hago algo como esto:

cout << pixeles[i][j].getRojo();
cout << "-";
cout << pixeles[i][j].getVerde();
cout << "-";
cout << pìxeles[i][j].getAzul();
cout << " ";


Tampoco compila, dándome el mismo error.

Pareciera como sí la "concatenacion" se "saturara" y me diese algo así como un "tope" (si es que eso tiene algun sentido jaja). Aunque igual raro, pues creo que no debería (y nunca me habia pasado antes, con este ni con ningun otro lenguaje). WTF! O.o

Bueno, ese es mi problema. Ojalá puedan ayudarme tal como lo han hecho hasta ahora :)

Saludos y muchas gracias.
#2
Programación C/C++ / [C++] Matrices
19 Noviembre 2012, 06:11 AM
Hola a todos..... tengo una duda existencial que aun no puedo resolver... necesito crear una matriz cuadrada de dimension n ingresada por el usuario por consola y luego el programa imprime la matriz con determinada forma creada por mi.

El codigo es el siguiente:

#include <iostream>
using namespace std;

void printMatriz(int m[][], int n){

   for(int i=0; i<n; i++){
       for(int j=0; j<n; j++){
           cout << m[i][j];
           if(j==n-1) cout << endl;
       }
   }
   cout << endl;

}

void forma(int m[][], int n){

   for(int i=0; i<n; i++){
       for(int j=0; j<n; j++){
           if(i==0) m[i][j] = 1;
           if(j==0||j==n-1) m[i][j] = 1;
           if(i==n-1) m[i][j] = 1;
       }
   }
   printMatriz(m,n);

}

int main(){

   int n = -1;
   int f;
   do{
       do{
           cout << "Ingrese dimension de matriz cuadrada mayor a 4: ";
           cin >> n;
           if(n==0) break;
       }while(n<5);
       int m[n][n];
       forma(m,n);        
   }while(n!=0);
   return 0;

}


Sé que esta mal la recepción de la matriz en las funciones, pero estoy perdido en como hacerlo funcionar.

Dado el código anterior, ¿Cuáles serían las modificaciones que ustedes le harían para realizar lo que quiero?
No es necesario que lo expliquen, sólo escriban el código funcional, con el menor numero de cambios posibles, así yo me encargo de investigar bien cómo es que funciona (si explican, mejor (más rapido). Si no, bien igual, que yo me craneo :P).

Saludos y gracias.
#3
Programación C/C++ / Duda puntero en C
24 Septiembre 2012, 04:24 AM
Hola a todos. Soy nuevo aquí y soy principiante en C, por lo que tengo la siguiente duda con este código:

#include <stdio.h>

int main(){
   
    int *a = (int*)malloc(sizeof(int)*3);
    int *b;
    *a = 2;
    *(a+1) = 4;
    *(a+2) = 6;
    b = a;
    *(b+1)=0;
    while(*(b++));
    printf("%i, %i, %i\n",*a,*(a+1),*(a+2));
    printf("%i, %i, %i\n",*b,*(b+1),*(b+2));
    free(a);
    getchar();
    return 0;
   
}


Por qué en la salida obtengo:

2, 0, 6
6, 1314869318, -1856398723


¿Por qué con ese while pareciera que "desaparecieran" los valores de los punteros iniciales de b?

*Nótese que es ";" al final del while y no un "{", y no hay ninguna línea de código dentro del while.


Saludos y gracias :)