Dlaczego gdy mnoży elementy wierszy to mnoży tylko po dwa kolejne składniki i zapisuje je jeden pod drugim? Chcę tak zrobić, żeby mi wymnożyło cały pierwszy wiersz i wyświetliło wynik, następnie cały drugi i wyświetliło wynik, itd.. Później muszę obliczyć sumę tych iloczynów, ale to już chyba będę wiedział.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define w 10
#define k 10
void sort( int *d, int size ) //sortowanie bąbelkowe
{
int r=size,tmp,i,j;
for( i = 0; i < r-1; ++i )
for( j = 0; j < r-1; ++j )
if( d[ j ] < d[ i + 1 ] )
{
tmp = d[ j ];
d[ j ] = d[ i + 1 ];
d[ i + 1 ] = tmp;
}
}
int main()
{
int i,j,r,d[w][k];
FILE *da, *wy;
da=fopen("macierz.txt", "r");
wy=fopen("posortowane.txt","w");
for (i=0; i<w; i++)
{
for (j=0; j<k; j++)
{
fscanf(da, "%d", &d[i][j]);
printf("%5d", d[i][j]);
}
printf("\n");
}
fclose(da);
printf("\n");
//sortowanie
sort( d, r=w*k ); //wywołanie funkcji sort; w*k macierz jednowymiarowa
for(i=0; i<w; i++)
{
for(j=0; j<k; j++)
{
fprintf(wy,"%5d",d[j][i]);
printf( "%5d", d[j][i]);
}
fprintf(wy,"\n");
printf("\n");
}
printf("\n");
//iloczzyn elementów wierszy
double ilo=1.0;
for(i=0; i<w; i++)
{
for (j=0; j<k; j++)
{
ilo=ilo*d[j][i];
printf("\nwynnik %f", ilo);
}}
fclose(wy);
return 0;
}
- macierz.txt (0 KB) - ściągnięć: 99