Take iste riadky v matici C

Programovacie jazyky, rady, poradňa...
MadMatt
Light Expert
Light Expert
Príspevky: 64
Registrovaný: 14 dec 2008, 13:15
Kontaktovať používateľa:

Take iste riadky v matici C

Príspevok od používateľa MadMatt »

caute mozte mi poradit ako mam urobit aby program zistil ci sa v jednej matici nachadzaju take iste riadky , pripadne aj vypisat kolko ich tam je ,neviem na to nejako prist to je kod (ten posledny cyklus for by s tym mal nieco robit) :

Kód: Vybrať všetko

int main(void){

    srand(time(NULL));

    int i,j,r,s,pocet=0;

    printf("zadaj velkost matice [stvorcova matica]\n");
    puts("pocet riadkov : ");
    scanf("%d",&r);
    puts("pocet stlpcov : ");
    scanf("%d",&s);

    if((r>10 || s>10) || (r!=s)){
        printf("matica je moc velka alebo nieje stvorcova\n");
        return 1;}
    int matica[r][s];
    for(i=0;i<r;i++)       //vygenerovanie prvkov matice
        for(j=0;j<s;j++)
            matica[i][j]=rand()%100;

    for(i=0;i<r;i++) //vypisanie matice
    {
        for(j=0;j<s-1;j++)
        {
            printf("%2d ",matica[i][j]);
        }
        printf("%2d \n",matica[i][s-1]);
    }
     for(i=0;i<=r;i++)
    {
        if(matica[i][s]==matica[i+1][s])
            {
                pocet++;
            }
    }
    printf("nasiel som %d takych istych riadov",pocet);
    return 0;}
DIK
Pilifo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 7001
Registrovaný: 12 okt 2007, 16:41
Kontaktovať používateľa:

Re: Take iste riadky v matici C

Príspevok od používateľa Pilifo »

Robené z hlavy, snáď to bude fungovať. Treba vymeniť tú funkciu, ktorú tam máš ty na počítanie riadkov za tú moju.
Vysvetlenie: ide sa od prvého riadku a vždy sa kontroluje zhoda so zvyšnými riadkami. Premenná zisti určuje, či sa 2 riadky zhodujú vo všetkých číslach alebo nie (0 - nezhodujú sa, 1 - zhodujú sa).

Kód: Vybrať všetko

int zisti = 1; 

for(i = 0; i <= r; i++)
{
  for(j = i + 1; i <= r; i++)
  {    
    for(k = 0; k <= s-1; k++)
    { 
      if(matica[i][k] != matica[j][k])
        zisti = 0;
    }
  if (zisti == 1)
    pocet++;
  zisti = 1;
  } 
}
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8224
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Take iste riadky v matici C

Príspevok od používateľa harrison314 »

Ak je ta matica extremnych rozmerov , puzi hash tabulku.
MadMatt
Light Expert
Light Expert
Príspevky: 64
Registrovaný: 14 dec 2008, 13:15
Kontaktovať používateľa:

Re: Take iste riadky v matici C

Príspevok od používateľa MadMatt »

nie nie ,maximalne rozmery mozu byt 10x10

//autoeditácia príspevku (17 Nov 2010, 20:43)
ten algoritmus este stale volako zle pracuje ,teda nevyhadzuje mi spravny pocet riadkov takych istych
Napísať odpoveď