• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyskakuje błąd po odpaleniu się konsoli

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
71 wizyt
pytanie zadane 9 marca 2016 w C i C++ przez sebask08 Użytkownik (510 p.)
edycja 9 marca 2016 przez sebask08


Po skompilowaniu program wyskakuje okno program 
przestaje działać siedze nad nim troche i nie moge
 znaleźć błędu. Moze ktoś pomoże?
Program ma polegać na zczytaniu z pliku macierzy
5 3
1.00 2.12 2.00
2.30 3.03 4.00
3.55 5.43 56.2
4.30 6.55 77.5
5.60 2.54 2.2

i zapisaniu do pliku macierzy ktorej poszczegolne elementy sa podzielone przez
najwiekszy element macierzy.

 



#include <stdio.h>
#include <stdlib.h>
FILE *plik1;
FILE *plik2;
int r, c, i, j;
double find_mtx_max(double **tab, int r, int c)
{

    double max = tab[0][0];
    double x;
    for (i =0; i<r; i++)
    {
        for (j =0; j<c; j++)
    {
        if(tab[i][j]>max)
        {
            max = tab[i][j];
        }
    }
    }
    return max;
}

int main()
{
    if((plik1 = fopen("plik1.txt", "r"))==NULL)
    {
        printf("Blad, plik o nazwie %s nie istnieje", "plik1.txt");
        return 1;
    }
    if((plik2 = fopen("plik2.txt", "w"))==NULL)
    {
        printf("Blad, plik o nazwie %s nie istnieje", "plik2.txt");
    }
    int r, c, i, j;
    fscanf(plik1, "%d %d", &r, &c);
    double **tab = (double **)malloc(sizeof(double *)*r);
    double max = find_mtx_max(tab, r, c);
    for (i = 0; i < r; ++i)
    {
        for (j = 0; j < c; ++j)
        {
        tab[i][j] /= max;
        }
    }
    for(i=0; i<c; i++)
    {
        for(j=0; j <r; j++)
        {
            fprintf(plik2, "%.3lf", tab[j][i]);

        }
           fprintf(plik2, "\n");
    }

    for (i = 0; i < c; ++i) free(tab[i]);
	free(tab);

	fclose(plik1);
	fclose(plik2);

    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 9 marca 2016 przez Krawiec91 Pasjonat (19,580 p.)

Zaalokowałeś pamięć tylko na tablicę wskaźników na typ double (wiersze macierzy). Musisz jeszcze dla każdego przydzielonego wskaźnika z tej tablicy, przydzielić pamięć na tablicę zmiennych typu double (kolumny macierzy).

Podobne pytania

+1 głos
1 odpowiedź 1,307 wizyt
0 głosów
4 odpowiedzi 305 wizyt
pytanie zadane 24 lutego 2016 w C i C++ przez Owczarek Niemiecki Obywatel (1,560 p.)
0 głosów
1 odpowiedź 210 wizyt
pytanie zadane 5 grudnia 2016 w C i C++ przez varespol Użytkownik (710 p.)

89,768 zapytań

138,374 odpowiedzi

309,455 komentarzy

59,679 pasjonatów

Advent of Code 2022

Top 15 użytkowników

  1. 1074p. - Argeento
  2. 1010p. - rucin93
  3. 1006p. - Michal Drewniak
  4. 1000p. - Łukasz Eckert
  5. 974p. - TheLukaszNs
  6. 949p. - JMazurkiewicz
  7. 946p. - adrian17
  8. 933p. - Jarosław Roszyk
  9. 889p. - nidomika
  10. 860p. - Mikbac
  11. 847p. - ssynowiec
  12. 799p. - Hubert Chęciński
  13. 772p. - Mawrok
  14. 768p. - overcq
  15. 764p. - Vinox
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...