carlosmay |
» 2016-05-27 17:48:24 mateczek masz racje, jest to surowe C |
W C nie używa się strumieni >> , << . #include <iostream> #include <fstream>
to C++. |
|
mateczek |
» 2016-05-27 18:49:08 @Carlosmay faktycznie nie zwróciłem uwagi, że Autor wątku przy zapisie do pliku posługuje się strumieniami. A co za tym idzie musiał użyć kompilatora c++ Ale prosty przykład mnożenia w C dwóch statycznych macierzy kwadratowych dorzucę #include <stdio.h>
int main() { const int size = 5; int matrixA[ size ][ size ]; int matrixB[ size ][ size ]; int matrixC[ size ][ size ]; for( int w = 0; w < size; w++ ) { for( int k = 0; k < size; k++ ) { matrixA[ w ][ k ] = 1; matrixB[ w ][ k ] = 3; } } for( int w = 0; w < size; w++ ) { for( int k = 0; k < size; k++ ) { int element = 0; for( int i = 0; i < size; i++ ) element += matrixA[ w ][ i ] * matrixB[ i ][ k ]; matrixC[ w ][ k ] = element; printf( "%d ", matrixC[ w ][ k ] ); } printf( "\n" ); } }
|
|
SeweXIN Temat założony przez niniejszego użytkownika |
» 2016-05-31 17:26:36 Witam ponownie, napisałem całkowicie od nowa program lecz wyskakuje mi błąd: pomoże ktoś i wyjaśni o co chodzi? #include "stdafx.h" #include <stdlib.h> #include <stdio.h> #define _CRT_SECURE_NO_DEPRECATE
int ** alokacja( int a, int b ) { int ** tab =( int ** ) malloc( sizeof( int * ) * a ); for( int i = 0; i < a; i++ ) tab[ i ] =( int * ) malloc( sizeof( int ) * b ); return( tab ); }
int ** odczytywanie( char * name, int * wa, int * wb ) { int a, b; FILE * macierze = fopen( name, "r" ); fscanf( macierze, "%d", & a ); fscanf( macierze, "%d", & b ); int ** tab = alokacja( a, b ); for( int i = 0; i < a; i++ ) for( int j = 0; j < b; j++ ) fscanf( macierze, "%d", & tab[ i ][ j ] ); fclose( macierze ); * wa = a; * wb = b; return( tab ); }
int ** mnozenie( int aa, int bb, int ** tab2, int ** tab3 ) { int ** tab = alokacja( aa, bb ); for( int i = 0; i < aa; i++ ) for( int j = 0; j < bb; j++ ) tab[ i ][ j ] = 0; for( int i = 0; i < aa; i++ ) for( int j = 0; j < bb; j++ ) tab[ i ][ j ] = tab[ i ][ j ] + tab2[ i ][ j ] * tab3[ j ][ i ]; return( tab ); }
void zapisywanie( int aa, int bb, int ** tab ) { FILE * macierze = fopen( "Wynik.txt", "w" ); fprintf( macierze, "%d %d \n", aa, bb ); for( int i = 0; i < aa; i++ ) { for( int j = 0; j < bb; j++ ) { fprintf( macierze, "%d ", tab[ i ][ j ] ); } fprintf( macierze, "\n" ); } fclose( macierze ); }
void unalokacja( int ** tab, int a ) { for( int i = 0; i < a; i++ ) free( tab[ i ] ); free( tab ); }
a błąd brzmi: Error 1 error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. |
|
jankowalski25 |
» 2016-05-31 17:42:32 |
|
SeweXIN Temat założony przez niniejszego użytkownika |
» 2016-05-31 17:47:43 czytałem że to może być że plik nie istnieje,lecz mam go na pulpicie |
|
jankowalski25 |
» 2016-05-31 17:51:53 Użyj fopen_s zamiast fopen . |
|
SeweXIN Temat założony przez niniejszego użytkownika |
» 2016-05-31 17:57:42 Error 1 error C2660: 'fopen_s' : function does not take 2 arguments
2 IntelliSense: a value of type "errno_t" cannot be used to initialize an entity of type "FILE *" 3 IntelliSense: argument of type "const char *" is incompatible with parameter of type "FILE **" 4 IntelliSense: too few arguments in function call |
|
carlosmay |
» 2016-05-31 18:05:24 |
|
1 « 2 » 3 |