Advertisement
ibanezzaro

Untitled

Jan 8th, 2016
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.33 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <stddef.h>
  5. /*scegliamo come rappresentazione alternativa di una matrice, una lista che indica
  6. il valore dell'elemento della matrice, e la sua posizione individuata da i e j.*/
  7. int i;
  8. int j;
  9. int imax;
  10. int jmax;
  11. struct newmatrix
  12. {
  13.     int indicei;
  14.     int indicej;
  15.     int valore;
  16.     struct newmatrix * prossimo;
  17. };
  18. struct newmatrix* matricenuova;
  19.  
  20. void matricerid(int oldmatrix[imax][jmax])
  21. {
  22.     struct newmatrix* matricenuova=(struct newmatrix*)malloc(sizeof(struct newmatrix));
  23.     for (i=0; i<imax; i++)
  24.     {
  25.         for (j=0; j<jmax; j++)
  26.         {
  27.             if (oldmatrix[i][j]!=0)
  28.             {
  29.                 matricenuova->indicei=i;
  30.                 matricenuova->indicej=j;
  31.                 matricenuova->valore=oldmatrix[i][j];
  32.                 matricenuova->prossimo=(struct newmatrix*)malloc(sizeof(struct newmatrix));
  33.                 matricenuova=matricenuova->prossimo;
  34.             }
  35.         }
  36.     }
  37. }
  38. void elementreplace(struct newmatrix *prossimo)
  39. {
  40.     int value;
  41.     printf("inserisci i valori di i,j e il valore da sostituire");
  42.     scanf("%d", &i);
  43.     scanf("%d", &j);
  44.     scanf("%d", &value);
  45.     while(prossimo != NULL) {
  46.         if(matricenuova->indicei!=i && matricenuova->indicej!=j)
  47.  
  48.     {
  49.         matricenuova=matricenuova->prossimo;
  50.     }
  51.  
  52.     else
  53.           {
  54.          printf("i valori di indice %d e %d sono", matricenuova->indicei, matricenuova->indicej);
  55.          matricenuova->valore=value;
  56.          matricenuova=(struct newmatrix*)malloc(sizeof(struct newmatrix));
  57.         }
  58.     }
  59. }
  60.  
  61. void visit(struct newmatrix *ptr){
  62. while(ptr != NULL) {
  63.     printf("%d\t %d\t %d\t\n",ptr->valore,ptr->indicei,ptr->indicej);
  64.     ptr=ptr->prossimo;
  65. }
  66.  
  67.  
  68. }
  69.  
  70. int main(void)
  71. {
  72.  
  73. printf("inserire i valori i e j della matrice:\ni:");
  74. scanf("%d", &imax);
  75. printf("\nj:");
  76. scanf("%d", &jmax);
  77. int matrice[imax][jmax];;
  78. for (i=0; i<imax; i++)
  79. {
  80.    printf("riga %d:", i+1);
  81.    for (j=0; j<jmax; j++)
  82.    {
  83.       printf("\ncolonna %d:",j+1);
  84.       scanf("%d", &matrice[i][j]);
  85.    }
  86. }
  87. printf("la matrice inserita è:\n");
  88. for (i=0; i<imax; i++)
  89. {
  90.     printf("\n");
  91.    for (j=0; j<jmax; j++)
  92.    {
  93.       printf("%d ", matrice[i][j]);
  94.    }
  95. }
  96. matricerid(matrice);
  97. elementreplace(matricenuova);
  98. visit(matricenuova);
  99.  
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement