Anonymní profil Martin – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Martin – Programujte.comAnonymní profil Martin – Programujte.com

 

Příspěvky odeslané z IP adresy 83.240.73.–

Martin
Java › Nefungční MergeSort
10. 2. 2013   #171359

Zdravím všechny programátory, snažil jsem se napsat MergeSort v Javě, který jsem přepsal přesně podle pseudokódu ale z nějákého důvodu mi nefunguje a vrací se pořád stejně seřazená posloupnost prvků v poli. Netušíte v čem je chyba? Děkuji

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mergesort;

/**
 *
 * @author okay
 */
public class MergeSort {

    private static int[] Merge(int pole[], int p, int q, int r) {
        int i = p;
        int j = q + 1;
        int k = 0;
        int[] nPole = new int[pole.length];
        while (j <= q && j <= r) {
            if (pole[i] <= pole[j]) {
                nPole[k] = pole[i];
                i++;
                k++;
            } else {
                nPole[k] = pole[j];
                j++;
                k++;
            }
            while (i <= q) {
                nPole[k] = pole[i];
                i++;
                k++;
            }
            while (j <= r) {
                nPole[k] = pole[j];
                j++;
                k++;
            }
            for (i = p; i < r; i++) {
                pole[i] = nPole[i];
            }
        }
        return pole;
    }

    public static int[] MergeSort(int pole[], int p, int r) {
        if (p < r) {
            int q = (p + r) / 2;
            MergeSort(pole, p, q);
            MergeSort(pole, q + 1, r);
            Merge(pole, p, q, r);
        }
        return pole;
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        //int[] pole = new int[8];
        int pole[] = {1, 6, 2, 9, 7, 3, 5,};
        //for (int i = 0; i < 8; i++) {
        //  double temp = Math.random() * 8;
        //int temp2 = (int) temp;
        //pole[i] = temp2;
        //}
        int p = 0;
        int r = pole.length;
        int[] MergeSort = MergeSort(pole, p, r);
        for (int i = 0; i < pole.length; i++) {
            System.out.print(pole[i] + " ");
        }
        // TODO code application logic here
    }
}
Martin
Java › Java - první příklad Herout
26. 11. 2012   #167671

Zdravím, snažím se pochopit základní práci s JAVOU, mám nainstalované NetBeans, a pročtených pár stran Programování v JAVA od Pavla Herouta. Kde bych měl napsat program, který přečte znak ze vstupu zvýší jej o jedničku a vrátí na výstup. Jenže mi jaksi nefuguje ten to přečtění vstupního znaku. Takhle to mám aktuálně, kde je chyba?

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package prvniprojekt;

/**
 *
 * @author martin
 */
public class PrvniProjekt {
    
    public static void main(String[] args) {
    char znak = System.in.read();
    System.out.println("znak o jedno vetsi je:" + ++znak); 
        
    }
    
}

Jak by to mělo vypadat správně. (přiznám se že nerozumím úplně těm knihovnám import java.io.* a nenašel jsem na webu nějáké srozumitelné info) Děkuji.

Martin
C / C++ › Délka řetězce
9. 3. 2012   #154623

#3 vitamin
Díky, za vysvětlení 

Martin
C / C++ › Délka řetězce
9. 3. 2012   #154619

Zdravím, nemůžu přijít na to proč mi tenhle kód  vrací délku řetězce o jedna menší než je skutečná např pro slovo "ahoj" číslo 3 místo 4ky. Nemůžu za boha na to přijít proč? Vím že je to asi nějáká pitomost ale už se nad tím trápím asi půl hoďky a nic mě nenapadá.

int porovnej(char *t1, char *t2)
{
    int i, j, delka, d1, d2;
    delka = 0;

    for(i=0; *(t1+i)!='\0'; i++) //merime delku retezce
    {
        d1 = i;
    }

...
Martin
C / C++ › Porovnání textového řetězce?
29. 2. 2012   #154193

Asi vím co máš na mysli, ale neumím to nějak slušně dát dohromady :c/ Kde dělám chyby prosím??

#include <stdio.h>
#include <stdlib.h>

int porovnej(char *t1, char *t2)
{
    int i, j, delka, d1, d2;
    for(i=1; *(t1)='\0'; i++) //merime delku retezce
    {
        d1 = i;
    }
    for(i=1; *(t2)!='\0'; i++) //merime delku retezce
    {
        d2 = i;
    }
    if (d1 >= d2)
    {
        delka = d1;
    }

        else
        {
        delka = d2;
        }

    for ( j=0; j < delka; j++) {
        if ( t1[j] > t2[j] ) return 1;
        if ( t1[j] < t2[j] ) return -1;
        if ( t1[j] == t2[j] ) return 0;
}
}
int main()
{
    char *slovo1 = "proc";
    char *slovo2 = "ahoj";
    if ( porovnej(slovo1,slovo2) == 0 ) printf("Obe slova \"%s\" jsou stejna.",slovo1);
    if ( porovnej(slovo1,slovo2) == 1 ) printf("Slovo \"%s\" je vetsi nez slovo \"%s\".", slovo1, slovo2);
    if ( porovnej(slovo1,slovo2) == -1 ) printf("Slovo \"%s\" je vetsi nez slovo \"%s\".", slovo2, slovo1);
  //  printf("Slovo \"%s\" je vetsi nez slovo \"%s\".", slovo1, slovo2);
    return 0;
}
Martin
C / C++ › Porovnání textového řetězce?
29. 2. 2012   #154189

Dobrý den neznáte někdo způsob jak nahradit funkci strcmp v jazyku C???? Mám totiž povoleny jen dvě základní knihovny : <stdio.h> a <stdlib.h>

Zkoušel jsem to  sizeof(t1) < sizeof(t2) ale problém spočívá v tom, že sizeof(t1) i sizeof(t2) se vyhodnotí na počet
Bytů, které potřebuje proměnná typu char* při uložení v paměti. Délku řetězce takto zjistit nelze, je nutné vymyslet jiný způsob. Jenže jaký??? :-/  Díky

Martin
Funkcionální programování › Scheme - procedura vyššího ř…
10. 1. 2012   #152162

Máme za úkol vytvořit v programu i nějákou proceduru vyššího řádu.

Známý mi poradil že prý by se daly upravit tyhle selektory co v něm mám nadefinované (dělat nějáký tip-maker), jenže já vůbec nevím kde začít.


(define tip1
  (lambda (x)
    (cons '(1 Vyhra-domacich) (list-ref x 3))))

(define tip0
  (lambda (x)
    (cons '(0 Remiza) (list-ref x 4))))
(define tip2
  (lambda (x)
    (cons '(2 Vyhra-hostu) (list-ref x 5))))

(define tip10
  (lambda (x)
    (cons '(10 Neprohra-domacich) (list-ref x 6))))
(define tip12
  (lambda (x)
    (cons '(12 Neremiza) (list-ref x 7))))

(define tip02
  (lambda (x)
    (cons '(02 Neprohra-hostu) (list-ref x 8))))

z téhle tabulky:

(define fotbal-ang list)

(define nabidka
  (list (fotbal-ang 1 'Liverpool 'Newcastle 1.52 3.70 6.10 1.07 1.21 2.30)
        (fotbal-ang 2 'Manch.Utd. 'Blackburn 1.15 6.50 14.00 1.03 1.06 4.43)
        (fotbal-ang 3 'Arsenal 'Q.P.R. 1.25 5.00 11.00 1.04 1.12 3.43)
        (fotbal-ang 4 'Bolton 'Wolves 2.20 3.10 3.10 1.28 1.28 1.54)
        (fotbal-ang 5 'Chelsea 'AstonVilla 1.28 4.80 9.20 1.01 1.12 3.15)
        (fotbal-ang 6 'Norwich 'Fulham 2.50 3.00 2.75 1.36 1.30 1.43)
        (fotbal-ang 7 'Stoke 'Wigan 1.70 3.30 4.80 1.12 1.25 1.95)
        (fotbal-ang 8 'Swansea 'Tottenham 4.40 3.30 1.75 1.88 1.25 1.14)
        (fotbal-ang 9 'WestBrom. 'Everton 2.60 3.10 2.55 1.41 1.28 1.39)
        (fotbal-ang 10 'Sunderland 'Manch.City 6.20 3.60 1.55 2.27 1.23 1.08)))

Vím že procedury vyšších řádů mají vracet zase procedury, ale vůbec nevím jak ji v tomhle případě vtvořit. Mohl by jste mi někdo rosím pomoci??

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032021 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý