Autor Tema: Programa en DevC++

0 Usuarios y 1 Visitante están viendo este tema.

04 Diciembre, 2008, 07:28 am
Leído 4451 veces

Maribel Rojas B.

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 7
  • Karma: +0/-0
  • Sexo: Femenino
elabore y compile un programa que tenga un menu con 3 opciones----case
1. leer
2 datos
3 salir
la opcion
1 .invoca una funcion que crea un arreglo de 120 elementos.
llene el arreglo con los siguientes numeros,
01234 repita la secuencia hasta llenar el arreglo,
 imprimalo en pantallo de la siguiente forma 01234
                                                           01234
                                            2. tres apuntadores enteros, asigne su edad
                                             y la de su mejor amigo a las localidades de memoria apuntadas
                                             en la localidad apuntada por el tercer apuntador, escriba el promedio de las edades
                                                                     3.una funcion que manda esos datos a pantalla y
                                                                     termina el programa.

No pude resolver este programa solo pude compilar la parte donde imprime 01234 sin llegar a los 120 num y lo demás no lo pude resolver
****Mara****

05 Diciembre, 2008, 02:45 am
Respuesta #1

leonardo09

  • Leonardo Andrés Jofré Flor
  • $$\Large \color{#c88359}\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 786
  • Karma: +0/-0
  • Sexo: Masculino
  • Leonardo Jofré
    • Leonardo Andrés Jofré Flor
Si publicaras el programa te podríamos corregir , pero nunca hacerte el programa, a menos que muestres avances
nunca seré buen matemático

05 Diciembre, 2008, 03:04 am
Respuesta #2

Maribel Rojas B.

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 7
  • Karma: +0/-0
  • Sexo: Femenino
hola empecé a hacerlo por separado para después unirlo, pero creo que me confundí más
Aquí está lo que había hecho y ya no supe que hacer

/*imprime 1234*/
#include <stdio.h>
#include <conio.h>
main ()
{
int i;
for(i=0;i<=4;i++)
   {
   printf("%d",i);
   }   
getch();
}

/*intento hacer un arreglo bidimensional*/
/*Opcion 1*/
void leer(int[24][5],int i, int j)
{
     int i,j;/*i=filas, j=columnas*/
for(i=0;i<=4;i++;)/* fila de 01234*/
for(j=0;i<=);  /*columnas*/
   {
   printf("%d",i);
   }   
getch();
}



/*menu*/
void leer(char*,char)       
 
  {   leer()
puts("1. Leer\n2.  Datos \n3. SALIR\n");
printf("INGRESA UNA OPCION Y PRESIONA <ENTER> PARA CONTINUAR: ");
opc = atoi(gets(cad));
while(opc<0 || opc>3)
opc = atoi(gets(cad));
switch(opc)
{
case 1:leer  ();break;
case 2:datos   ();break;
if(opc<3) 
  {
puts("\nPresiona <ENTER> Para Regresar al Menu\n");
}
getch();

}

/*Intento hacer la opcion 2*/
void datos(

char *nombre, *amigo;
printf("Escribe tu nombre:");
scanf("%s", *nombre);
printf ("Escribe el nombre de tu mejor amigo");
scanf("%s", *amigo);
****Mara****

05 Diciembre, 2008, 05:23 am
Respuesta #3

leonardo09

  • Leonardo Andrés Jofré Flor
  • $$\Large \color{#c88359}\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 786
  • Karma: +0/-0
  • Sexo: Masculino
  • Leonardo Jofré
    • Leonardo Andrés Jofré Flor
Encontre un error en tu programa:

Para poder ingresar una matriz a una funcion se pone el nombre de la matriz y la segunda dimension (en el caso de C)

void leer(intnombre[][5],int i, int j)
{
    ;// int i,j estas variables ya están declaradas en la función por lo tanto no se ponen
for(i=0;i<=4;i++;)/* fila de 01234*/
for(j=0;i<=);  /*columnas*/
   {
   printf("%d",i);
   }   
getch();
}
nunca seré buen matemático

07 Diciembre, 2008, 08:08 pm
Respuesta #4

djgera

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 122
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
Hola

Veo que estás un poco perdida.

El main() está incompleto, no se llama a ninguna función de tu programa, cerca del menú escribes un prototipo de la función leer por debajo de la función leer() y a su vez está tiene otra definición, ¿ el switch ? el es scanf(formato, &variable) de la forma que está se ""romperá"" la memoria.

Por cierto scanf es rápido pero puede traer dolores de cabeza, es preferible evitarlo y usar algo más elaborado.

ejemplo:

Código: [Seleccionar]
int leer_dato()
{
        char aux[10];
        int dato;

        printf("$ ");
        fgets(aux, sizeof(aux), stdin);
        sscanf(aux, "%d", &dato);

        return dato;
}

Esto sirve para leer un dato entero sin problemas.

No está muy claro el primer enunciado de todas formas, me permito la siguiente interpretación:

Para tu caso de la carga de la matriz que el usuario ingresa y la impresión en pantalla podría ser así:

Código: [Seleccionar]
#include <stdio.h>

#define FILAS 24
#define COLUMNAS 5

int leer_dato()
{
        char aux[10];
        int dato;

        printf("$ ");
        fgets(aux, sizeof(aux), stdin);
        sscanf(aux, "%d", &dato);

        return dato;
}

void llenar_matriz(int matriz[][COLUMNAS])
{
    int i, j;

    printf("Carga de la matriz\n");
    for (i = 0; i < FILAS; i++) {
        for (j = 0; j < COLUMNAS; j++)
            matriz[i][j] = leer_dato();
        printf("-\n");
    }
}

void mostrar_matriz(int matriz[][COLUMNAS])
{
    int i, j;

    printf("Datos de la matriz\n");
    for (i = 0; i < FILAS; i++) {
        for (j = 0; j < COLUMNAS; j++)
            printf("%d\t", matriz[i][j]);
        printf("\n");
    }
}

int menu()
{
    printf("\n\n1: Cargar matriz\n");
    printf("2: Mostrar matriz\n");
    printf("3: Salir\n\n");

    return leer_dato();
}

int main()
{
    int matriz[FILAS][COLUMNAS];

    int opcion;

    do {
        opcion = menu();
        switch (opcion) {
            case 1:
                llenar_matriz(matriz);
                break;
            case 2:
                mostrar_matriz(matriz);
                break;
            case 3:
                printf("¡chau!\n");
                break;
            default:
                printf("Opción inválida\n");
        }
    } while (opcion != 3);

    return 0;
}