|
141
|
Programación / Programación C/C++ / Re: Problema con matrices
|
en: 4 Julio 2014, 23:16 pm
|
* 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.
|
|
|
143
|
Programación / Programación C/C++ / Re: Colores de fondo y para texto en C
|
en: 4 Julio 2014, 07:26 am
|
#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 / Programación C/C++ / Re: principiante
|
en: 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: error: a label can only be part of a statement and a declaration is not a statement|
¡¡¡¡ Saluditos! ..... !!!!
|
|
|
145
|
Programación / Programación C/C++ / Re: Ayuda en c++ Urgente!!!!
|
en: 1 Julio 2014, 16:55 pm
|
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: 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: 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: #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
|
Programación / Programación C/C++ / Re: necesito q el programa me pida los datos hasta q yo le diga que no, y que imprim
|
en: 30 Junio 2014, 00:09 am
|
Yo te aconsejaría usar una sola función Zona a cambio de pasarle como parámetro la velocidad máxima en cada caso. 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: 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: ///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
|
Programación / Programación C/C++ / Re: AYUDA CON EXTRAER DEL STRFTIME
|
en: 27 Junio 2014, 15:06 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: dia = 25 mes = 5 anyo = 2014
Process returned 0 (0x0)
#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
|
Programación / Programación C/C++ / Re: Programa para distinguir palindromos:
|
en: 27 Junio 2014, 14:30 pm
|
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: 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: #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
|
Programación / Programación C/C++ / Re: Programación en c [Problema de novato]
|
en: 25 Junio 2014, 17:00 pm
|
Amén de lo que te indica eferion en esta línea: 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: #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: else(x>17);
sería sin el punto y coma final y con un if: 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.
|
|
|
|
|
|
|