annam90
01-06-2010, 19:10
ho una domanda...devo realizzare un programma che effettui operazioni su matrici. il tipo matrice perņ deve essere una lista di liste-
la prima funzione, creamatrice per l'appunto crea dei problemi.
questo č il main
#include <stdio.h>
#include <stdlib.h>
#include "funzioni.h"
int main()
{
matrice matrice1;
int i,righe,colonne;
matrice1.prox=&matrice1;
matrice1.colonne.prox=&matrice1.colonne;
scanf("%d",&righe);
scanf("%d",&colonne);
creamatrice(&matrice1,righe,colonne);
for(i=0;i<4;i++){
printf("%f ",matrice1.colonne.element);
matrice1.colonne=*matrice1.colonne.prox;}
system("PAUSE");
return 0;
}
questo il file .c con la funzione:
#include <stdio.h>
#include <stdlib.h>
#include "funzioni.h"
void creamatrice(matrice* matrice1, int righe, int colonne)
{
int count,i;
count=0;
while(count<colonne){
for(i=0;i<2;i++){
matrice1->colonne.element=5;
if(i!=righe-1)
matrice1->colonne = *matrice1->colonne.prox;
else
matrice1->colonne.prox=NULL; }
for(i=2;i<4;i++){
matrice1->colonne.element=2;
if(i!=righe-1)
matrice1->colonne = *matrice1->colonne.prox;
else
matrice1->colonne.prox=NULL; }
matrice1=matrice1->prox; count++; }
}
file .h
#include <stdio.h>
#include <stdlib.h>
typedef struct A { float element; struct A * prox; } RIGHE;
typedef struct B { RIGHE colonne; struct B * prox; } matrice;
extern void creamatrice(matrice* matrice1, int righe, int colonne);
extern void stampamatrice(matrice *);
extern void scrivielemento(matrice *, float, int, int);
extern float leggielemento(matrice *, int, int);
extern int numerorighe(matrice *);
extern int numerocolonne(matrice *);
ora cm ora il puntatore punta sempre alla stessa struttura mentre io voglio che punti sempre ad una nuova struttura quando chiamato...come fare?
la prima funzione, creamatrice per l'appunto crea dei problemi.
questo č il main
#include <stdio.h>
#include <stdlib.h>
#include "funzioni.h"
int main()
{
matrice matrice1;
int i,righe,colonne;
matrice1.prox=&matrice1;
matrice1.colonne.prox=&matrice1.colonne;
scanf("%d",&righe);
scanf("%d",&colonne);
creamatrice(&matrice1,righe,colonne);
for(i=0;i<4;i++){
printf("%f ",matrice1.colonne.element);
matrice1.colonne=*matrice1.colonne.prox;}
system("PAUSE");
return 0;
}
questo il file .c con la funzione:
#include <stdio.h>
#include <stdlib.h>
#include "funzioni.h"
void creamatrice(matrice* matrice1, int righe, int colonne)
{
int count,i;
count=0;
while(count<colonne){
for(i=0;i<2;i++){
matrice1->colonne.element=5;
if(i!=righe-1)
matrice1->colonne = *matrice1->colonne.prox;
else
matrice1->colonne.prox=NULL; }
for(i=2;i<4;i++){
matrice1->colonne.element=2;
if(i!=righe-1)
matrice1->colonne = *matrice1->colonne.prox;
else
matrice1->colonne.prox=NULL; }
matrice1=matrice1->prox; count++; }
}
file .h
#include <stdio.h>
#include <stdlib.h>
typedef struct A { float element; struct A * prox; } RIGHE;
typedef struct B { RIGHE colonne; struct B * prox; } matrice;
extern void creamatrice(matrice* matrice1, int righe, int colonne);
extern void stampamatrice(matrice *);
extern void scrivielemento(matrice *, float, int, int);
extern float leggielemento(matrice *, int, int);
extern int numerorighe(matrice *);
extern int numerocolonne(matrice *);
ora cm ora il puntatore punta sempre alla stessa struttura mentre io voglio che punti sempre ad una nuova struttura quando chiamato...come fare?