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ú

Mensajes - leosansan

#141
* Tienes errores en los punteros del array bidimensional, que han de ser **, tanto en su declaración como en los argumentos de las funciones.

* Se te ha ido la olla al hacer mat[ i , j ] en lugar de mat [ i ][ j ]

* Tienes mal declarado el array bidimensional con el operador new.

* Te falta el return de main.

Con esas correcciones o puntualizaciones, ya que el resto del código es el tuyo, y tabulando o indentando el código de forma más razonable -no escatimes con los espacios en blanco, si no queda todo apelotonado- una posible solución, según tienes planteado, sería:




EI: codigo suprimido.




Por cierto, si quieres la suma de la diagonal no olvides que fil = col. Y si han de ser iguales te puedes ahorrar un cin, tomando col = fil si la matriz ha de ser del tipo n x n.



#142
Cita de: nolasco281 en  4 Julio 2014, 00:18 AM
.........................................................
En que parte de los ejemplos se utilizan estas librerias y para que? muchas gracias por compartir y suga aumentadolo si queda tiempo

Código (cpp) [Seleccionar]

#include <algorithm>
#include <utility>

....................................................






#143
Cita de: Slava_TZD en  3 Julio 2014, 23:36 PM
#include <stdio.h>

#define ROJO "\x1b[31m"
#define REST "\x1b[0m"

int main (int argc, char const *argv[]) {
 printf(ROJO "ROJO" REST "\n");
 return 0;
}

..........................................
Supongo que trabajas en Linux o similar ya que en Windows no me funcionan dichas secuencias de escape. Porfi Slava_TZD, si me equivoco corrígeme pelease.

Para el entorno Windows, no sé si en Linux, puedes ver el siguiente enlace:




,,,
. .
|
\-/


¡¡¡¡ Saluditos! ..... !!!!


#144
Programación C/C++ / Re: principiante
2 Julio 2014, 13:21 PM


,,,
. .
|
\-/



La declaración de fichero y cadena han de ir antes de los case porque si los metess en el case te cantará error:

Citar
error: a label can only be part of a statement and a declaration is not a statement|

¡¡¡¡ Saluditos! ..... !!!!




#145
Cita de: engel lex en  1 Julio 2014, 02:08 AM
lo que preguntas, en el otro tema, no te sirve, porque la otra persona tenía un dato extra que le permitía hacer un sistema de ecuaciones, que era el dato sobre la cantidad de invitados...

.................................

intenta aplicar esto (modificado a tu problema, que no tiene indicado que son 100 invitados........................


Perdona la observación engel lex y si me equivoco corrígeme, please:

Cita de: rafa011 en  2 Marzo 2014, 23:23 PM
Un centenar de mujeres, hombres y niños asistieron a un banquete para recaudar fondos.
...............................

Con lo que basta un simple for para obtener la solución:

Citar
Diputados: 33  Senadores: 46  Invitados: 21  Total: 100  Total recaudado: 7869

Process returned 0 (0x0)   execution time : 0.023 s
Press any key to continue.

Y a quien procede, dejo el código ya que creo que está bien "ofuscado" y no serviría para "entregar" como solución, a no ser que se lo curre y se entere de lo que pone. En cualquier caso aconsejo visitar el enlace de la cita de engel lex en su mensaje para "ampliar" puntos de vista:

Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;

int main (){
 for (int i=0; i<=100; ++i)
    if ( (100-(369+35*i)/24-i) >=0 && 99*(369+35*i)/24+(100-(369+35*i)/24-i)*75 + 40*i == 7869 )
      cout << "Diputados: " << (100-(369+35*i)/24-i) << "  Senadores: "<< (369+35*i)/24 << "  Invitados: " << i << "  Total: " << (369+35*i)/24+(100-(369+35*i)/24-i)+i << "  Total recaudado: " << (100-(369+35*i)/24-i)*75 +99*(369+35*i)/24+ 40*i << endl;
 return 0;
}


¡¡¡¡ Saluditos! ..... !!!!


#146
Yo te aconsejaría usar una sola función Zona a cambio de pasarle como parámetro la velocidad máxima en cada caso.

Código (cpp) [Seleccionar]
float Zona(float v,float limit){
 float mult=0;
 if(v>limit)
   mult=(1000+(500*(v-limit)));
 else
   mult=0;
 return mult;
}


Y ya que has arreglado lo del while también te aconsejaría usar un par de arrays para ir quedando los coches que pasan por cada zona y los que en las mismas son multados:

Código (cpp) [Seleccionar]
float velocidad,promedio[4]={0},cont[4]={0};
 int zona,multa[4]={0};


Y el tratamiento de una zona, la cuatro como ejemplo, la haría:

Código (cpp) [Seleccionar]

///faltaria las zona=1,  zona=2 y zona=3, analogas a la 4
///con las correspondientes velocidades maximas de argumento en la funcion Zona  
   if((zona==4) && (Zona(velocidad,180)==0)){
     cout<<placa<<" no paga multa"<<endl;
    cont[3]++;
   }
   else if(zona==4 && Zona(velocidad,180)!=0){
     cout<<placa<<" su multa es=  "<<Zona(velocidad,180)<<endl;
     cont[3]++;
     multa[3]++;
   }
   if(zona==4 && cont[3]!=0)
      promedio[zona-1]+=Zona(velocidad,180);
 
   cout<<"cargar mas s/n=<"<<endl;
   cin>>opc;

 }///fin del WHILE
 if(opc=='n'){ //SOLO aqui va
   for(zona=0;zona<4;zona++)
     if (cont[zona]!=0)
     cout<<"[zona= "<<zona+1<<"] "<<endl<<"Promedio de las multas = "<<promedio[zona]/cont[zona]<<"   Multas: "<<multa[zona]<<"   Vehiculos que han circulado: "<<cont[zona]<<endl;
 }


Aunque yo sería partidario de un swtich en lugar de tanto if-else.

Pero para que vayas cogiendo una idea creo que te vale,

¡¡¡¡ Saluditos! ..... !!!!




Y por favor, indenta  más correctamente el códiogo.


#147
Cita de: practi1 en 27 Junio 2014, 13:38 PM
ok a ver si me explico mejor quiero que la variable que tenga la fecha la pueda separar pero no se como  :-(  eso es lo q necesito

es decir si  char fecha[128]= 25/05/2014

quiero saber como separar de esa cadena de caracteres el 25 el 05 y el 2014 eso es lo q quiero  

Una forma sería con sscanf:

Citar
dia = 25  mes = 5  anyo = 2014

Process returned 0 (0x0)

Código (cpp) [Seleccionar]
#include<stdio.h>

int main(){
 char fecha[128]= "25/05/2014";
 int dia, mes ,anyo;
 sscanf (fecha,"%d/%d/%d",&dia,&mes,&anyo);
 printf (" dia = %d  mes = %d  anyo = %d\n", dia, mes, anyo );
 return 0 ;
}


¡¡¡¡ Saluditos! ..... !!!!


#148
Además de lo ya mencionado por eferion:

* Si declaras n y j como variables globales no tiene sentido que las vuellvas a declarar en la función bool. Mejor no las declaras como globales y sí en bool ya que sólo las usas en ésta.

* La función strcmp"" está pensada para comparar cadenas. En el caso de caracteres se pueden comparar directamente:

Código (cpp) [Seleccionar]
if( cadena[k] != cadena[j-1] )

* Tienes un error lógico. Si el último caracter de la cadena coincide con el primero n=1 y devuelve true, cuando a lo mejor en otros no son iguales.

* En realidad basta recorrer la mitad del array o cadena para saber si es o no palindromo.

* Los índices de los arrays empiezan en cero y tú los empiezas desde 1 (k=1), con lo que se quedara sin comparar el primer caracter.

Con las observaciones de eferion y las que te expongo, una posible solución sería:

Código (cpp) [Seleccionar]
#include <iostream>
#include <cstring>

using namespace std;

bool palindromo ( char cadena[100] );

int main(){
  char cadena[100];
  cout << "Introduzca una palabra o cadena de ellas sin utilizar espacios y/o" << endl;
  cout << " mayusculas, minusculas, acentos, etc. El programa le dira si la" << endl;
  cout << " cadena introducida es un palindromo."<< endl;
  cin >> cadena;
  cin.get();
  if ( palindromo ( cadena ) )
    cout<< "Es un palindromo.";
  else
    cout<< " No es un palindromo.";
  cin.get();
  return 0;
}

bool palindromo ( char cadena[100] ){
  int k = 0, j = tam;
  for ( k = 0; k < tam/2; k++, j-- )
    if( cadena[k] != cadena[j-1] )
      return false;
  return true;
}


¡¡¡¡ Saluditos! ..... !!!!


#149
Amén de lo que te indica eferion en esta línea:

Código (cpp) [Seleccionar]
else{ prinf("bienvenido");}

Le falta la "t" al printf.

Te falta la librería stdlib.h par el uso de "system". Fíjate en la parte inferior del programa en los mensajes que indica, ya que por esa ausencia lanza un warning.

Y ya puestos, no hace falta las llaves en los if, else si sólo tienen como cuerpo una línea, dicho a lo breve.

Y ya que empiezas hazlo con buenos hábitos como indentar el código con cierto criterio. Algo como:

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main() {
 int x = 0;
 printf("Introduzca su edad:\n");
 scanf( "%d", &x );
 if ( x <= 17)
   printf("no eres bienvenido!!\n");
 else
   printf("bienvenido\n");
 system("pause");
 return 0;
}


¡¡¡¡ Saluditos! ..... !!!!




EDITO:

La línea:

Código (cpp) [Seleccionar]
else(x>17);

sería sin el punto y coma final y con un if:

Código (cpp) [Seleccionar]
else if (x>17)

Aunque en este caso lo del if estaría de más, ya que si no es <=17 sólo queda como opción ser >17.

Y para cuando cuelguesel código elige las etiquetas GeSHi y toma la C++ y en medio de las etiquetas Code que aparecen "pegas" tu código. Al no hacerlo de esta manera parte del código no sale correcta, especialmente las matrices.
#150
Lo lógico es que la velocidad introducida sea a la que iba y, en función de que sea superior a la máxima permitida, se multará o no. Algo como:

Código (cpp) [Seleccionar]
cout << "Ingrese en kilometros a que velocidad iba: " << endl;
  cin >> k;
  if ( k > 100)
    cout << "La multa a pagar es =" << placam ( pm,v, k) << endl;
  else
    cout << "Velocidad inferior a la maxima permitida." << endl;


¡¡¡¡ Saluditos! ..... !!!!