矩阵内部结构内的数组

时间:2014-11-29 14:58:06

标签: c arrays matrix structure

我如何在结构中传递(和更改)此数组P(在dinamic矩阵中分配,mtrix [] [])

 typedef struct product 
{
 float P[5]; // I need to operate inside this array from my function. 
}PT;

这是我的功能

 int memo () // don't know how to declare /* i need to change the float of  a specific position of the array inside the specific structure */
{
 int x,y,pd;
 printf (" put x\n");
 scanf ("%d", &x);
 printf ("put y\n");
 scanf ("%d", &y);
 printf ("put pd\n");

 scanf  ("%d",&pd);
 printf ("insert new float\n"); /* i tried a lot of way but cant change nothing the code is incomplete because i really don't know how to change the specific place of the array inside the struct i selected */


 return ;
} 

从现在开始谢谢你,抱歉我的英文不好

已添加代码 - 这是意大利语 - 这是我尝试解决大量时间的行为 - 需要像收银机一样使用它来获得更多卖家和更多天,但每个卖家只能访问五类产品(并且selled的东西每天添加为特定浮点的不同单元格中的唯一总和)希望解决这个问题我觉得真的很傻-.-

#include <stdlib.h>
#include <stdio.h>



int END = 0; Need this global to escape from the program


struct prodotti // prodotti tabaccheria un vettore di 5 per cinque categorie. 
{
 float P[5];
};


int main ()
{ 
    printf ("                   ************************************\n");
    printf ("                   *    Gestionale Cassa Tabaccheria  *\n");
    printf ("                   ************************************\n");


struct prodotti // prodotti tabaccheria un vettore di 5 per cinque categorie. 
{
 float P[5];
};

int v,d,z,i,pd,s,j,k, tv;
float tot;
struct prodotti **ptr;

printf("Quanti venditori vuoi gestire?\n");
scanf ("%d", &s);  

ptr=(struct prodotti**) calloc(s, sizeof(struct prodotti*));
if (ptr == NULL){
 printf ("Errore di allocazione\n");
 return 0;};

printf ("Di quanti giorni vuoi gestire le vendite?\n");
scanf ("%d", &d);

for (i=0; i<s; i++)
{
ptr[i] = (struct prodotti*) calloc(d, sizeof(struct prodotti) );
if (ptr[i] == NULL){
 printf ("Errore di allocazione\n");
 return 0;};
};


}
printf ("\n");
system ("PAUSE");

for (;;)
{
if (END==1){
;
 return 0;};
gestore_funzioni(ptr[0][0],d,s);
};
  return 0 ;  
};

int gestore_funzioni (struct prodotti** ptr, int d, int s)
{ 
  system("cls");
  int g;
  printf("\n\n");
  printf ("Cosa vuoi fare ora?\n");
  printf ("Immettere dei dati vendita = 1\n");
  printf ("Scovare dei dati di vendita specifici = 2\n");
  printf ("Trovare il migliore venditore per periodo di tempo = 3\n");
  printf ("Trovare prodotto che ha venduto maggiornemente nel periodo di tempo = 4\n");
  printf ("Uscire dal programma = 5\n");

 do {
 fflush (stdin);
 scanf ("%d", &g);
} while (g<0||g>5);

if (g==1){memo(ptr,d,s);}; // I ACCESS to MY function from THIS 
if (g==2){visualizzatore(ptr,d,s);};
if (g==3) {best_seller(ptr,d,s); };
if (g==4);//{ /*best_product(ptr[0][0],d); };*/best_seller(ptr[0][0],d); };
if (g==5){uscita();};

return ;
};


 memo ()
{
 int j,k,pd,i;


 printf (" Immetti il codice del venditore\n");
 scanf ("%d", &k);
 printf ("Di quale giorno vuoi memorizzare le vendite?\n");
 scanf ("%d", &j);
 printf ("Immetti il codice prodotto\n");
 // codici_prodotto();
 scanf  ("%d",&pd);
 printf ("Inserisci il venduto in Euro\n");
 scanf ("%f", ptr[k][j].P[pd]);

 printf("%.2f", ptr[k][j].P[pd]);

 return ;
} 

2 个答案:

答案 0 :(得分:0)

你的问题不是那么清楚。您可以创建结构的实例:

PT yourArray;
// you can now insert the values;
int i;
for(i=0;i<5;i++) {
  printf("Enter the element %d", i+1);
  scanf("%f", yourArray.P[i]);
}

这样您就可以在数组中输入值。 同样,您可以通过分配特定值或表达式来修改第i个元素:     yourArray.P [i] = ... //某个表达式或值

答案 1 :(得分:0)

使用...

mtrix[x][y]->PT->P[i];

您可以访问P成员。

所以,让我们说你想在P [0]上添加一个浮点数,它在PT中,这是在mtrix [0] [0]内,你可以这样做:

printf ("insert new float\n");
scanf ("%f", &mtrix[0][0]->PT->P[i]);