Programación General > C/C++
problema programacion en c
cerberos1990:
tengo este codigo es un programa que se ingresan numeros enteros y la salida es un ranking de 5 numeros mayores o menores ascendentes o descendentes segun quiera el usuario de numeros semiperfectos y el porcentaje de numeros semiperfectos. Y hasta ahroa tengo esto pero compilo y tira errores alguien me ayuda?
#include <stdio.h>
void RevisarFinDatos (int* haydatos)
{
char rta;
do{
printf('Desea ingresar dato? (S/N)');
scanf (rta);
}
while(rta != 'S' || rta != 'N')
*haydatos = 1;
if(rta == 'N') {
*haydatos = 0;
}
}
void IngresarOrden (char* orden1,char* orden2){
do
{
printf('Ingrese "A" si desea que el orden de salida de datos sea ascendente o "D" si desea que sea descendente');
scanf(*orden1);
}
while(*orden1 != 'A' || *orden1 != 'D');
do{
printf('Ingrese "M" si desea que se muestren los 5 mayores o "E" si desea que se muestren los 5 menores');
scanf(*orden2);
}
while(*orden2 != 'M' || *orden2 != 'E');
}
void PrimerIngreso (int* continuar,char* orden1,char* orden2)
{
Revisarfindatos(continuar);
if(*continuar == 1){
IngresarOrden (orden1, orden2);
}
}
void MostrarRanking(char orden1,int[] A,int CE)
{
if(CE != 0){
if(orden1 == 'A'){
for(int i = 0; i == ce-1; i++){
prinf(A);
}
}
else
{
for(int i = CE-1; i == 0; i++){
printf(A);
}
}
}
else
{
printf('No se ingresaron numeros');
}
}
void Ranking (int dato,char orden2,int[] A, int* CE)
{
if(orden2 == 'M'){
i = *CE-1;
while(i >= 0) {
if(A < dato ){
A[i+1] = A;
i = i-1;
}
}
A[i+1] = dato;
if(*CE < MAX-1){
ce++;
}
else
{
i = *CE-1;
}
while(i >= 0) {
if(A > dato ){
A[i+1] = A;
i--;
}
}
A[i+1] = dato;
if(*CE < MAX-1){
*CE++;
}
}
}
void IngresarEnteroPositivo (int* N)
{
do
{
printf('Ingrese entero positivo');
scanf(*N);
}
while(*N <= 0)
}
void Porcentaje (int total, int es)
{
if (total <> 0) {
printf('El porcentaje de numeros perfectos es', es*100/total);
}
else{
printf('No se procesaron numeros');
}
}
bool EsSemiperfecto(int n)
{
int suma = 0;
int es = 0;
for(int i = n/2; i= 1; i++){
if(n % i == 0)
{
suma++;
if(suma > n)
{
suma--;
}
}
}
if(suma == n)
{
es = 1;
}
return es;
}
void main()
{
int ce = 0;
int total = 0;
int es = 0;
int continuar;
PrimerIngreso(&continuar, &orden1, &orden2);
while (continuar != 0)
{
IngresarEnteroPositivo(&N);
total++;
if (EsSemiperfecto(N)){
Ranking(N, orden2, &salida, &CE);
es++;
}
RevisarFinDatos(&continuar);
}
MostrarRanking(salida, CE);
Porcentaje(total, es);
}
ProfesorX:
Para empezar, cuando publiques codigo, utiliza las etiquetas de codigo [ code][ /code] (sin espacio) para encerrar tu codigo, hace que sea mas legible en el foro.
En segundo lugar, tu codigo tiene DEMASIADOS ERRORES para corregirlo, lo que me indica que no tienes ni idea de lenguaje C/C++, por lo que te recomiendo que te consigas un buen libro de programacion en C/C++ y te pongas a estudiar, porque asi no lograras mucho, y aqui nadie te hara tu trabajo si tu no lo haces.
Solo para que te des cuenta de algunos de tus errores, pondre la primera funcion de tu programa corregida, no te corregire todo el programa, pero repito, consigue un buen libro y estudia.
--- Código: C++ ---void RevisarFinDatos (int* haydatos){ char rta; do { // en C/C++, las cadenas van entre comillas "" no entre apostrofes '' printf("Desea ingresar dato? (S/N)"); // Cuando usas scanf, debes poner el tipo de variable a leer, en esta caso %c, // indicando que es una variable de tipo char, ademas deberas usar el & antes de la variable scanf ("%c", &rta); } // Te falto ; al final del do..while while (rta != 'S' || rta != 'N'); *haydatos = 1; if (rta == 'N') { *haydatos = 0; }}
Saludos y suerte :)
cerberos1990:
Me re sirvio lo que me dijiste lo que si...
void MostrarRanking(char orden1,int[] A,int CE)
en esta linea me aparece ) expected :| y no encuentro la razon el resto ya lo solucione todo...
ProfesorX:
El encabezado esta mal en lugar de:
--- Código: C++ --- void MostrarRanking(char orden1,int[] A,int CE)
debe ser
--- Código: C++ ---void MostrarRanking(char orden1,int A[],int CE)
cerberos1990:
Por casualidad encontras algun error en el codigo del Procedimiento Ranking?
--- Código: Text --- #include <stdio.h>#define MAX 6 void RevisarFinDatos (int* haydatos){ char rta; do{ fflush(stdin); printf("Desea ingresar dato? (S/N)"); scanf("%c", &rta); } while(rta == 'S' && rta == 'N'); *haydatos = 1; if(rta == 'N') { *haydatos = 0; }} void IngresarOrden (char *orden1,char *orden2){ do { fflush(stdin); printf("Ingrese 'A' si desea que el orden de salida de datos sea ascendente o 'D' si desea que sea descendente"); scanf("%c", orden1); } while(*orden1 != 'A' && *orden1 != 'D'); do{ fflush(stdin); printf("Ingrese 'M' si desea que se muestren los 5 mayores o 'E' si desea que se muestren los 5 menores"); scanf("%c", orden2); } while(*orden2 != 'M' && *orden2 != 'E');} void PrimerIngreso (int* continuar,char* orden1,char* orden2){ RevisarFinDatos(continuar); if(*continuar == 1){ IngresarOrden (orden1, orden2); }} void MostrarRanking(char orden1,int A[],int CE){ int i; if(CE != 0){ if(orden1 == 'A'){ for(i = 0; i == CE-1; i++){ printf("%d", &A[i]); } } else { for(i = CE-1; i == 0; i--){ printf("%d", &A[i]); } } } else { printf("No se ingresaron numeros"); }} void Ranking (int dato,char orden2,int A[], int* CE){int i;if(orden2 == 'M'){ i = *CE-1; while(i >= 0) { if(A[i] < dato ){ A[i+1] = A[i]; i = i-1; } } A[i+1] = dato; if(*CE < MAX-1){ *CE++; } else { i = *CE-1; } while(i >= 0) { if(A[i] > dato ){ A[i+1] = A[i]; i--; } } A[i+1] = dato; if(*CE < MAX-1){ *CE++; }}} void IngresarEnteroPositivo(int* N){ do { fflush(stdin); printf("Ingrese entero positivo"); scanf("%d", N); } while(*N <= 0);} void Porcentaje (int total, int es){ int h = es*100/total; if (total != 0) { printf("El porcentaje de numeros perfectos es %d", h); } else{ printf("No se procesaron numeros"); } } int EsSemiperfecto(int n){ int i; int suma = 0; int es = 0; for(i = n; i >= 1; i--){ if(n % i == 0) { suma=suma+n; if(suma > n) { suma=suma-n; } } } if(suma == n) { es = 1; } return es;} void main(){ int ce = 0; int total = 0; int es = 0; int continuar; int salida[MAX]; char orden1; char orden2; int N; int CE; PrimerIngreso(&continuar, &orden1, &orden2); while (continuar != 0) { IngresarEnteroPositivo(&N); total++; if (EsSemiperfecto(N)){ Ranking(N, orden2, salida, &CE); es++; } RevisarFinDatos(&continuar); } MostrarRanking(orden1, salida, CE); Porcentaje(total, es);}
Navegación
[#] Página Siguiente
Ir a la versión completa