busco ayuda urgente problemas [Error] invalid types 'int[int]' for array subscr

Iniciado por rodrigo98, 8 Octubre 2017, 06:21 AM

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

rodrigo98

Porfavor ya nose que hacer

Código (cpp) [Seleccionar]
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
//funcion que captura un vector alfa
void captura_vector(int* alfa)
{
int i;
alfa=(int *)malloc(sizeof(int*)*(i));
for(i=0;i<=3;i++)
{
printf("ingresa cordenada: ",i);
scanf("%d",&alfa[i]);
}
}
//funcion que captura el vector beta
void captura_beta(int* beta)
{
int i;
beta=(int *)malloc(sizeof(int*)*(i));
for(i=0;i<=3;i++)
{
printf("ingresa cordenada: ",i);
scanf("%d",&beta[i]);
}
}
//funcion menu
void menu_principal(int *alfa, int *beta)
{
int op,i,c,sum;
float result,j;

printf("******MENU*******\n");
printf("1.-SUMA\n");
printf("2.-PRODUCTO ESCALAR\n");
printf("3.-PRODUCTO PUNTO\n");
printf("4.-NORMA DE UN VECTOR\n");
printf("5.-VECTOR UNITARIO\n");
printf("INGRESA UNA OPCION\n");
scanf("d",&op);

//inicio de calculadora atraves de opciones o intruccion casos
switch(op)
{
case '1': //operacion suma
printf("********SUMA********\n");
for(i=0;i<=3;i++)
sum[i]=alfa[i]+beta[i];
printf("\nEl resultado de la suma es: ",sum);
break;

case '2': //operacion producto escalar
printf("\n********PRODUCTO ESCALAR********\n");
printf("Seleccione vector\n");
printf("1.-Alfa (vector 1)\n");
printf("2.-Beta (vector 2)\n");
scanf("d",&op); //seleccion de vector con el q se trabajara
printf("ingresa escalar\n");
scanf("d",&c);
if (op==1) //lectura de opcion
{
for(i=0;i<=3;i++) //vector alfa
result[j]=c*(alfa[i]);
}
else
{
for(i=0;i<=3;i++) //vector beta
result[j]=c*(beta[i]);
}
printf("el resultado es:\n",result); //impresion de resultados de ambos vectores(cada uno por separado)
break;

case '3': //operacion producto punto
printf("\n********PRODUCTO PUNTO********\n");
printf(" \n",alfa[2]*beta[3]-alfa[3]*beta[2]); //primera ecuacion de la matriz
printf(" \n",-alfa[1]*beta[3]+alfa[3]*beta[1]);  //segunda ecuacion de la matriz
printf(" \n",alfa[1]*beta[2]-alfa[2]*beta[1]); //tercer ecuacion de la matriz
break;

case '4': //operacion de la norma de un vector
printf("\n********NORMA DE UN VECTOR********\n");
printf("Seleccione vector\n");
printf("1.-Alfa (vector 1)\n");
printf("2.-Beta (vector 2)\n");
scanf("d",&op); //seleccion de opcion de vector
sum=0;
for(i=0;i<=3;i++)
{
if (op==1)
{
sum=sum+alfa[i]*alfa[i]; //vector alfa
}
else
{
sum=sum+beta[i]*beta[i]; //vector beta
}
if(op==1) //imprecion de resultado
{
printf("la norma de alfa es:  ",sqrt(sum)); //resultado de alfa
}
else
{
printf("la norma de beta es:  ",sqrt(sum)); // resultado de beta
}
}
break;

case '5': // operacion de un vector unitario
printf("*******VECTOR UNITARIO******** ");
printf("Seleccione vector\n");
printf("1.-Alfa (vector 1)\n");
printf("2.-Beta (vector 2)\n");
scanf("d",&op);
sum=0;
for(i=0;i<=3;i++)
{
if (op==1)
{
sum=sum+alfa[i]*alfa[i]; //vector alfa
result=sqrt(sum);
printf("el vector unitario de alfa es:  ",alfa[i]/result);
}
else
{
sum=sum+beta[i]*beta[i]; //vector beta
result=sqrt(sum);
printf("el vector unitario de beta es:  ",beta[i]/result);
}
}
break;
}
}
//funcion principal
int main(int argc, char** argv)
{

int *alfa, *beta;

captura_vector(alfa);
captura_beta(beta);
menu_principal(alfa,beta);

return 0;
}

Porfavor necesito ayuda me marca errores de
49   9 [Error] invalid types 'int[int]' for array subscript
64   13 [Error] invalid types 'float[float]' for array subscript
69   13 [Error] invalid types 'float[float]' for array subscript

BloodSharp

Cita de: rodrigo98 en  8 Octubre 2017, 06:21 AMPorfavor ya nose que hacer

Tenés unos serios problemas con los punteros el primero que ví

Código (cpp) [Seleccionar]
int i;
alfa=(int *)malloc(sizeof(int*)*(i));


que calculo que quisiste solo almacenar el número entero y no la dirección "basura" que contiene porque no está siquiera inicializada/asignada:

Código (cpp) [Seleccionar]
int i;
alfa=(int *)malloc(sizeof(int));


en el main igual, estás pasando valores de direcciones basura:

Código (cpp) [Seleccionar]
int *alfa, *beta;

captura_vector(alfa);
captura_beta(beta);
menu_principal(alfa,beta);


se soluciona así:

Código (cpp) [Seleccionar]

int alfa, beta;

captura_vector(&alfa);
captura_beta(&beta);
menu_principal(&alfa,&beta);


otra recomendación aunque no hay error en esto es que no incluyas definiciones ni mezcles librerías de C++ (iostream) con C (el resto)...


B#



ivancea96

Ni result ni sum son arrays, pero los tratas como si lo fueran:
Código (cpp) [Seleccionar]
int op,i,c,sum;
sum[i]=alfa[i]+beta[i];

sum es int, no int* ni array, no puedes usarle [].

rodrigo98

Si  muchas gracias si se solucionaron los errores y tendré muy en cuenta lo de no mezclar las librerías y las definiciones   de C y C++.

solo que ahora no muestra las instrucciones del menú.

ivancea96

Pusiste: "case '1':". Al poner el 1 entre comillas simples, lo interpreta como un caracter. Un caracter, al final es solo un número, y su valor ascii es el 49, con lo que eso realmente es como si fuera: "case 49:".
Pon el número sin las comillas en los case.

rodrigo98

ooo cierto muchas gracias de nuevo ya con esto quedo mi programa muchas gracias