Jueves 14 de Noviembre de 2024, 23:04
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
problema programacion en c
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: problema programacion en c (Leído 2175 veces)
cerberos1990
Nuevo Miembro
Mensajes: 4
problema programacion en c
«
en:
Lunes 16 de Noviembre de 2009, 22:31 »
0
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);
}
Tweet
ProfesorX
Moderador
Mensajes: 796
Nacionalidad:
Re: problema programacion en c
«
Respuesta #1 en:
Martes 17 de Noviembre de 2009, 01:43 »
0
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
NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================
cerberos1990
Nuevo Miembro
Mensajes: 4
Re: problema programacion en c
«
Respuesta #2 en:
Martes 17 de Noviembre de 2009, 03:41 »
0
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
Moderador
Mensajes: 796
Nacionalidad:
Re: problema programacion en c
«
Respuesta #3 en:
Martes 17 de Noviembre de 2009, 19:50 »
0
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
)
NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================
cerberos1990
Nuevo Miembro
Mensajes: 4
Re: problema programacion en c
«
Respuesta #4 en:
Martes 17 de Noviembre de 2009, 19:52 »
0
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);
}
ProfesorX
Moderador
Mensajes: 796
Nacionalidad:
Re: problema programacion en c
«
Respuesta #5 en:
Martes 17 de Noviembre de 2009, 20:53 »
0
En Ranking no, pero en MostrarRanking tienes 2 errores en printf
Código: C++
printf
(
"%d"
,
&
A
[
i
]
)
;
debe ser:
Código: C++
printf
(
"%d"
, A
[
i
]
)
;
El printf, a diferencia de scanf, no necesita &
Bueno, ya terminaste la parte facil, corregir los errores de sintaxis (compilacion) ahora viene lo mas dificil, corregir los errores de logica en tu programa, te deseo suerte
Saludos
NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================
cerberos1990
Nuevo Miembro
Mensajes: 4
Re: problema programacion en c
«
Respuesta #6 en:
Miércoles 18 de Noviembre de 2009, 04:28 »
0
Me tira un error:
General Protection Exception
En la linea 79 osae en
Código: Text
if(*A[i] < dato ){^
ni idea que sera
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
problema programacion en c