Skocz do zawartości
kim.

[c]jak Wczytać Dane Do Macierzy Z Pliku

Rekomendowane odpowiedzi

No wiec mam program który ma wczytywać liczby z pliku do macierzy(np. 1; 2; 3) i je transponować. Niestety nie wychodzi mi wczytywanie z pliku, mam tylko z klawiatury. Co gdzie zmienić?

#include <stdio.h>#include <stdlib.h>int main(void){int i,j,n,m,**mac;scanf("%d %d",&n,&m);mac = (int **) malloc(n*sizeof(int));for(i=0;i<n;i++) mac[i] = (int *) malloc(m*sizeof(int));for(i=0;i<n;i++)	for(j=0;j<m;j++)		scanf("%d",&mac[i][j]);/wyświetla macierz transponowanafor(i=0;i<m;i++)	{	for(j=0;j<n;j++)		printf("%d ",mac[j][i]);	printf("\n");	}return 0;}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Niestety nie wychodzi mi wczytywanie z pliku

A coś zrobiłeś w tej sprawie?

 

Musisz zrobić uchwyt do pliku i z niego wczytywać wartości.. Wiem jak to zrobić za pomocą strumieni w C++ ale w czystym C nie bardzo..

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Napisalem Ci w C wczytywanie macierzy z pliku do tablicy, dla pliku wejsciowego o tak zorganizowanych danych:

30 2 10 2 10 0 0

Gdzie pierwszy wiersz zawiera rozmiar macierzy, a kolejne wiersze jej wspolczynniki. Program przyjmuje nazwe pliku jako argument wywolania (int argc, char*arg[] w main'ie ponizej), dlatego jezeli zalozmy twoj program nazywiesz start, a plik z macierza macierz.txt, to nalezy wywolac program spod konsoli w nastepujacy sposob: start macierz.txt

 

Ponizszy kod jest odporny na zlosliwe(=bledne) dane wejsciowe.

 

int main(int argc, char *argv[]){	FILE *plik;	char *nazwa=argv[1];	float **mac,tmp;	int a,n,i,j;	/*----------------PRACA Z PLIKIEM----------------------------*/	if (!(plik = fopen (nazwa,"r"))){								   /*Otwieramy plik jesli to mozliwe*/		printf("Nie mozna otworzyc pliku!");		exit (0);	}	if(!fscanf(plik,"%d",&n)||n<0){									 /*Sczytujemy wielkosc macierzy o ile jest poprawna*/		printf("Niepoprawny rozmiar macierzy!");		exit (0);	}	if (!(mac=(float**)(malloc(n*(sizeof(float*)))))){				  /*alokujemy dynamicznie tablice o ile starcza pamieci*/		printf("Za malo pamieci!");		exit (0);	}	for (i=0; i<n; i++){		 if(!(mac[i]=(float*)(malloc(n*(sizeof(float)))))){			printf("Za malo pamieci!");			exit (0);		}	}	for (i=0; i<n; i++){												/*wczytujemy dane do tablicy o ile dane w pliku sa poprawne*/		for (j=0; j<n; j++){			if(((a=fscanf(plik,"%f",&mac[i][j]))==EOF)||!a){				printf("Niepoprawne dane w pliku!");				exit (0);			}		}	}	fclose(plik);	/*--------------KONIEC PRACY Z PLIKIEM---------------------*/	return 0;}
Edytowane przez moreno

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

#define _CRT_SECURE_NO_DEPRECATE

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include<string.h>

int main()

{

FILE *input,*output,*output2;

int suma,tab[128][7];

double wart_sred;

char c;

int i, j, n;

input= fopen("input.txt","r");

output=fopen("output.txt","w+");

output2=fopen("output2.txt","w+");

if (input==NULL)

{

printf("blad\n");

return 0;

};

if (output==NULL)

{

printf("blad\n");

return 0;

};

if (output2==NULL)

{

printf("blad\n");

return 0;

};

 

 

Ja w swoim projekcie tak zaimplementowałam czytanie z pliku, ale było to czytanie wraz ze sprawdzaniem pliku, w tym miejscu urywam:/ bo dalej dzieją sie nieciekawe rzeczy :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...