logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Wczytywanie liczb z pliku do tablicy w C - jak to zrobić?

Wawa_19_ 11 Lut 2008 18:37 1391 5
REKLAMA
  • #1 4794556
    Wawa_19_
    Poziom 14  
    Posty: 166
    Ocena: 6
    Np. jak mam taka tablicę:
    7
    0 1 1 1 0.5 1 0.7
    1 0 0.4 1 0.9 0.1 1
    1 0.4 0 1 0.8 1 0.2
    1 1 1 0 0.5 0.3 1
    0.5 0.9 0.8 0.5 0 1 1
    1 0.1 1 0.3 1 0 1
    0.7 1 0.2 1 1 1 0
    to jak wstawić do tab[][] te liczby???


    
    int tab[100][100];
    //odczyt z pliku tabeli
    printf("Podaj nazwe pliku w ktorym miesci sie graf:\n");
    scanf("%s",&nazwa_pliku);
    plik = fopen(nazwa_pliku, "r");
    fscanf(plik,"%d,",&w);
    for(i=0;i<=w-1;i++)
      for(j=0;j<=w-1;j++)
        {
          ?????????
        }
    fclose(plik);
    
  • REKLAMA
  • #2 4796696
    aligatormp
    Poziom 14  
    Posty: 99
    Pomógł: 10
    Ocena: 7
    Powinieneś uściślić czy:
    każda cyfra jest osobną liczbą?
    co jest separatorem liczb (spacja, kropka ...)?
    wydaje mi się, że 7 oznacza ilość wierszy lub ilość liczb w wierszu
    a liczby są z zakresu 0-1
    czy liczby w pliku są stringiem?
  • REKLAMA
  • #3 4796726
    Wawa_19_
    Poziom 14  
    Posty: 166
    Ocena: 6
    Tak liczby są z zakresu 0-1.
    1 spacja jest pomiędzy liczbami.
    Aha już widzę błąd tab mam jako int a powinno byc jako zmiennoprzecinkowe. No ale to i tak nie wiem jak to zrobić.
    7 to zarówno liczba wierszy i kolumn.
    No i niekażda cyfra jest osobną liczbą np. tab[0][0]=0, tab[0][4]=0.5 Tak to powinno wyglądać.
  • REKLAMA
  • Pomocny post
    #4 4797364
    RhinoRace
    Poziom 17  
    Posty: 127
    Pomógł: 21
    Ocena: 1
    float tab[100][100];
    //odczyt z pliku tabeli
    printf("Podaj nazwe pliku w ktorym miesci sie graf:\n");
    scanf("%s",&nazwa_pliku);
    plik = fopen(nazwa_pliku, "r");
    fscanf(plik,"%d,",&w);
    for(i=0;i<=w-1;i++)\
    {
      for(j=0;j<=w-1;j++)
        {
          fscanf(plik, "%f", &tab[i][j]);
        }
       fscanf(plik, "/n");
    }
    fclose(plik);

    ten kod powinien zadziałać
  • REKLAMA
  • #5 4797906
    Wawa_19_
    Poziom 14  
    Posty: 166
    Ocena: 6
    Jednak działa. A jak zrobić takie coś, że najpierw chcę przelecieć tablicę i pozmieniać każdy z elementów który jest mniejszy od 1 na 1. Potem to samo chcę zrobić ale z 2 elementami każdymi, potem z 3 itd. Potrzebne mi to jest bo do każdej zmiany pewien algorytm będę stosował pewną heurystykę no i lipton.
  • #6 4798645
    RhinoRace
    Poziom 17  
    Posty: 127
    Pomógł: 21
    Ocena: 1
    Chcesz żeby każdy mniejszy element był zamieniany na liczbę czy też chcesz zrobić wartość bezwzględną?
    W tym pierwszym przypadku robisz 3 pętle i masz po kłopocie ;)
    int max_liczba=5;
    int rozmiar=10;
    for (int z = 1 ; z < max_liczba ; z++)
    {
    	for (int i = 0 ; i < rozmiar ; i++)
    	{
    		for (int j = 0 ; j < rozmiar ; j++)
    		{
    			if (tab[i][j] < z)
    				tab[i][j] = z;
    		}
    	}
    	//wywolanie funkcji liczacej te heurystyki czy ci tam chcesz miec ;)
    }

    Innym sposobem jest zrobienie do tego funkcji
    - jako parametry przyjmowałbyś wskaźnik na tablicę oraz liczbę z jaką ma porównywać
    - pozbywasz się zewnętrznej pętli (tej z z), a w wewnętrznych pętlach zamiast z dajesz zmienną z parametru wejściowego
REKLAMA