Помош: Кратки програмки

Член од
8 октомври 2007
Мислења
4.680
Поени од реакции
8.511
Имам прашање: ако ставам ; после while, ќе прејде на следна наредба или?
Затоа што за конкретнава програма не ми извршува ништо (а ако одиме по логиката дека преоѓа на следно, би требало да го испечати KRAJ)....
Прегледај го приврзокот 73074
while(j < 7); <---- ovde ne smee da stoi ; (nekoi postari kompajleri bi ti dale i greska za ovaa naredba)
Vaka kako sto si napisal, programata ke vrti beskonecno vo while ciklusot. Duri i ako gi trgnes ; programata nema da zavrsi
tuku ke pecati : ) (nov red) beskonecno, zatoa sto nikade ne go inkrementiras j.
Ako sakas da raboti normalno t.e da izleze normalno od ciklusot, bi trebalo nesto vaka (zavisi kolku pati sakas da vrtis niz ciklusot):

int j = 4;
while (j < 7)
{
printf(": )\n");
j++;
}
printf("KRAJ");
return 0;
 
Член од
14 септември 2013
Мислења
86
Поени од реакции
19
while(j < 7); <---- ovde ne smee da stoi ; (nekoi postari kompajleri bi ti dale i greska za ovaa naredba)
Vaka kako sto si napisal, programata ke vrti beskonecno vo while ciklusot. Duri i ako gi trgnes ; programata nema da zavrsi
tuku ke pecati : ) (nov red) beskonecno, zatoa sto nikade ne go inkrementiras j.
Ako sakas da raboti normalno t.e da izleze normalno od ciklusot, bi trebalo nesto vaka (zavisi kolku pati sakas da vrtis niz ciklusot):

int j = 4;
while (j < 7)
{
printf(": )\n");
j++;
}
printf("KRAJ");
return 0;
Конкретно, ова не ми е јасно:
#include<stdio.h>
int main()
{
int j=0;
while(j<3);
{
printf("Te sakam!\n");
j++;
}
printf("Need you...");
return 0;
}
Зошто не се извршува последниот ред? За while не е исполнет условот, но не ми е јасно зошто не преминува на следната наредба во програмата...
 
M

Mr.InF3ction

Гостин
thebuddhatet

Како мислиш за while не е исполнет услов? while ќе се извршува се додека изразот внатре е точно во твојот случај прво иницијализираш j = 0, што значи во while циклусот изразот е точно, пошто нели 0 < 3 ..
Тебе само оваа линија (while(j<3)";" ти се извршува цело време. Веќе ти објаснав за ";" каков ефект има во while и for.

Инаку користи code таг кога постираш код и нели постирај во темата за ц/ц++.
 
Член од
14 септември 2013
Мислења
86
Поени од реакции
19
thebuddhatet

Како мислиш за while не е исполнет услов? while ќе се извршува се додека изразот внатре е точно во твојот случај прво иницијализираш j = 0, што значи во while циклусот изразот е точно, пошто нели 0 < 3 ..
Тебе само оваа линија (while(j<3)";" ти се извршува цело време. Веќе ти објаснав за ";" каков ефект има во while и for.

Инаку користи code таг кога постираш код и нели постирај во темата за ц/ц++.
Пак се збунив, морав да прашам....и стварно не знам во која тема веќе да постирам...од секоја ме бркате :(
 
M

Mr.InF3ction

Гостин
:icon_lol:
Не те бркам/е туку ти кажав кај да постираш...т.е општо за секој јазик има посебна тема и прашањата постави ги соодветно за побрзо да добиеш одговор.
 

DarkoG

Better then ever before.
Член од
19 август 2008
Мислења
701
Поени од реакции
81
Ако некој може да ми каже каде е проблемот во програмчето, автоматски се затвора од како ќе се изврши операцијата множење?

Код:
#include <stdio.h>
/* Glavna funkcija main() */
int main() {
/* Za dvata broevi sto se mnozat zemame broj1 i broj2 a rezulatot e broj3 */
 
int broj1,broj2,broj3;
 
        printf("Vnesi go prviot broj:");
        if(scanf("%d",&broj1)==1)
        {
                printf("Vnesi go vtoriot broj:");
                if(scanf("%d",&broj2)==1)
                {
                broj3=broj1*broj2;
                printf("Rezultatot od mnozenjeto e:%d",broj3);
                }
                else
                {
                        printf("greska, ve molime vnesete tocna vrednost");
                }
        }
        else
        {
                printf("greska, ve molime vnesete tocna vrednost");
        }
}
фала однапред
 
M

Mr.InF3ction

Гостин
DarkoG

На крај од прогрмата стави getchar(); за програмата да чека корисникот да притисне некое копче од тастатура.
 
Член од
28 август 2013
Мислења
4.488
Поени од реакции
13.708
Ако некој може да ми каже каде е проблемот во програмчето, автоматски се затвора од како ќе се изврши операцијата множење?

Код:
#include <stdio.h>
/* Glavna funkcija main() */
int main() {
/* Za dvata broevi sto se mnozat zemame broj1 i broj2 a rezulatot e broj3 */
 
int broj1,broj2,broj3;
 
        printf("Vnesi go prviot broj:");
        if(scanf("%d",&broj1)==1)
        {
                printf("Vnesi go vtoriot broj:");
                if(scanf("%d",&broj2)==1)
                {
                broj3=broj1*broj2;
                printf("Rezultatot od mnozenjeto e:%d",broj3);
                }
                else
                {
                        printf("greska, ve molime vnesete tocna vrednost");
                }
        }
        else
        {
                printf("greska, ve molime vnesete tocna vrednost");
        }
}
фала однапред
Многу ти е брз компјутерот, затоа ти се затвара :P
 

ferdzo(hacker) :)

Македонче
Член од
19 април 2013
Мислења
115
Поени од реакции
14
Туториал за Визуал Бејзик можи да кажете некој на Македонски да е.
 
Член од
5 декември 2009
Мислења
439
Поени од реакции
66
проблемо шо го јавува гласи : non-static variable this cannot be referenced from a static context

Polinomi.java

Код:
package polinomi;
 
public class Polinomi {
   
public class Array<E>{
private E data[];
private int size;
public Array(int size){
data = (E[])new Object[size];
this.size = size;
}
 
public E get (int position) {
    if (position >= 0 && position <size) {
        return data[position];
    }
    return null;
}
 
public void set (int position, E o) {
    if (position >= 0 && position < size) {
        data[position] = o;
    }
    else
        System.out.println("ne e vnesena pravilna pozicija");
}
}
 
Array <Integer> koeficienti;
   
public  Polinomi (Array<Integer> koeficienti) {
        this.koeficienti = koeficienti;
  }
   
public Array<Integer> getKoeficienti() {
        return koeficienti;
}
   
public void setKoeficienti (Array <Integer> koeficienti ) {
        this.koeficienti = koeficienti;
}
 
    @Override
public String toString () {
    String ret = new String ();
    for (int i=1;i<= koeficienti.get(0)*2; i+=2) {
        ret +=koeficienti.get(i+1)+ "*x" + koeficienti.get(i) + " ";
    }
    return ret;
}
   
public Polinomi soberi (Polinomi o) {
        Polinomi prezultat;
       
        Array <Integer> koeficienti2 = o.getKoeficienti();
       
        int n = koeficienti.get(0);
        int m = koeficienti2.get(0);
       
        Array <Integer> rezultat;
        rezultat= new Array <Integer> (n*2 + m*2 + 1);
       
        int k,i,j;
        i=j=k=1;
       
            while (i<= 2*n && j<=2*n) {
                if(koeficienti.get(i) == koeficienti2.get(j)) {
                    rezultat.set(k+1,koeficienti.get(i+1) + koeficienti2.get(j+1));
               
                    if(rezultat.get(k+1) != null ) {
                        rezultat.set(k,koeficienti.get(i));
                        k+=2;
                    }
                i+=2 ; j+=2;
                }
                else {
                    if(koeficienti.get(i) > koeficienti2.get(j)) {
                        rezultat.set(k+1,koeficienti.get(i+1));
                       
                        if(rezultat.get(k+1) != null) {
                            rezultat.set(k,koeficienti.get(i));
                            k+=2;
                        }
                        i+=2;
                    }
                    else if (koeficienti.get(i) < koeficienti2.get(j)) {
                        rezultat.set(k+1, koeficienti2.get(j+1));
                       
                        if(rezultat.get(k+1) != null) {
                            rezultat.set(k,koeficienti2.get(j));
                            k+=2;
                        }
                        j+=2;
                    }
                }
          }
           
            while (i <= 2*n) {
                rezultat.set(k+1,koeficienti.get(i+1));
                if (rezultat.get(k+1) != null) {
                    rezultat.set(k,koeficienti.get(i));
                    k+=2;
                }
                i+=2;
            }
           
            while (j <= 2*m) {
                rezultat.set(k+1,koeficienti2.get(j+1));
                if(rezultat.get(k+1) != null) {
                    rezultat.set(k,koeficienti2.get(j));
                    k+=2;
                }
                j+=2;
            }
           
            rezultat.set(0,k/2);
            prezultat = new Polinomi (rezultat);
            return prezultat;
 
}
 
public static void main(String[] args) {
       
    Array <Integer> n1 = new Array <Integer> (10);
    Array <Integer> n2 = new Array <Integer> (10);
   
    n1.set(0,2);
    n1.set(1,4);
    n1.set(2,2);
    n1.set(3,0);
    n1.set(4,3);
   
    n2.set(0, 3);
    n2.set(1, 3);
    n2.set(2, 1);
    n2.set(3, 2);
    n2.set(4, 2);
    n2.set(5, 0);
    n2.set(6, 8);
   
    Polinomi a = new Polinomi (n1);
    Polinomi b = new Polinomi (n2);
   
    Polinomi c = a.soberi(b);
    System.out.print  (c.toString());
   
}
}
 
Член од
8 октомври 2007
Мислења
4.680
Поени од реакции
8.511
проблемо шо го јавува гласи : non-static variable this cannot be referenced from a static context

Polinomi.java

Код:
package polinomi;
 
public class Polinomi {
 
public class Array<E>{
private E data[];
private int size;
public Array(int size){
data = (E[])new Object[size];
this.size = size;
}
 
public E get (int position) {
    if (position >= 0 && position <size) {
        return data[position];
    }
    return null;
}
 
public void set (int position, E o) {
    if (position >= 0 && position < size) {
        data[position] = o;
    }
    else
        System.out.println("ne e vnesena pravilna pozicija");
}
}
 
Array <Integer> koeficienti;
 
public  Polinomi (Array<Integer> koeficienti) {
        this.koeficienti = koeficienti;
  }
 
public Array<Integer> getKoeficienti() {
        return koeficienti;
}
 
public void setKoeficienti (Array <Integer> koeficienti ) {
        this.koeficienti = koeficienti;
}
 
    @Override
public String toString () {
    String ret = new String ();
    for (int i=1;i<= koeficienti.get(0)*2; i+=2) {
        ret +=koeficienti.get(i+1)+ "*x" + koeficienti.get(i) + " ";
    }
    return ret;
}
 
public Polinomi soberi (Polinomi o) {
        Polinomi prezultat;
     
        Array <Integer> koeficienti2 = o.getKoeficienti();
     
        int n = koeficienti.get(0);
        int m = koeficienti2.get(0);
     
        Array <Integer> rezultat;
        rezultat= new Array <Integer> (n*2 + m*2 + 1);
     
        int k,i,j;
        i=j=k=1;
     
            while (i<= 2*n && j<=2*n) {
                if(koeficienti.get(i) == koeficienti2.get(j)) {
                    rezultat.set(k+1,koeficienti.get(i+1) + koeficienti2.get(j+1));
             
                    if(rezultat.get(k+1) != null ) {
                        rezultat.set(k,koeficienti.get(i));
                        k+=2;
                    }
                i+=2 ; j+=2;
                }
                else {
                    if(koeficienti.get(i) > koeficienti2.get(j)) {
                        rezultat.set(k+1,koeficienti.get(i+1));
                     
                        if(rezultat.get(k+1) != null) {
                            rezultat.set(k,koeficienti.get(i));
                            k+=2;
                        }
                        i+=2;
                    }
                    else if (koeficienti.get(i) < koeficienti2.get(j)) {
                        rezultat.set(k+1, koeficienti2.get(j+1));
                     
                        if(rezultat.get(k+1) != null) {
                            rezultat.set(k,koeficienti2.get(j));
                            k+=2;
                        }
                        j+=2;
                    }
                }
          }
         
            while (i <= 2*n) {
                rezultat.set(k+1,koeficienti.get(i+1));
                if (rezultat.get(k+1) != null) {
                    rezultat.set(k,koeficienti.get(i));
                    k+=2;
                }
                i+=2;
            }
         
            while (j <= 2*m) {
                rezultat.set(k+1,koeficienti2.get(j+1));
                if(rezultat.get(k+1) != null) {
                    rezultat.set(k,koeficienti2.get(j));
                    k+=2;
                }
                j+=2;
            }
         
            rezultat.set(0,k/2);
            prezultat = new Polinomi (rezultat);
            return prezultat;
 
}
 
public static void main(String[] args) {
     
    Array <Integer> n1 = new Array <Integer> (10);
    Array <Integer> n2 = new Array <Integer> (10);
 
    n1.set(0,2);
    n1.set(1,4);
    n1.set(2,2);
    n1.set(3,0);
    n1.set(4,3);
 
    n2.set(0, 3);
    n2.set(1, 3);
    n2.set(2, 1);
    n2.set(3, 2);
    n2.set(4, 2);
    n2.set(5, 0);
    n2.set(6, 8);
 
    Polinomi a = new Polinomi (n1);
    Polinomi b = new Polinomi (n2);
 
    Polinomi c = a.soberi(b);
    System.out.print  (c.toString());
 
}
}

Во main пробуваш да повикаш:
Array <Integer> n1 = new Array <Integer> (10);
Array <Integer> n2 = new Array <Integer> (10);

Класата Аrray ти е дефинирана како inner non-static class во рамките на класата Polinomi.
Кога од main (која ти претставува статички метод) пробуваш да ја повикаш Array класата, програмата се обидува да повика инстанца од таа класа(затоа што класата ти е декларирана како non-static), но истата не постои. За да постои инстанца од класата Array мора да постои инстанца од класата Polinomi. Ако сакаш да можеш да ја повикуваш класата Array како класа, а не да повикуваш инстанца од неа, треба истата да ја декларираш како static.
Еве повеќе детали за inner и static-nested класите
http://stackoverflow.com/questions/70324/java-inner-class-and-static-nested-class
 
M

Mr.InF3ction

Гостин
Charlie Brown

Направи си нова класа само за "main" и таму копирај ја цела функција "main" . И секогаш практикувај секоја класа во нов фајл и после тестирај во една класа што има само main функција ништо друго.
 
Член од
5 декември 2009
Мислења
439
Поени од реакции
66
Да се напише метод кој ќе прима еден цел број и ќе ја печати неговара репрезентација како Римски број. Пр. 1998 треба да дај излез MCMXCVIII .
Ај некој помош..
 
M

Mr.InF3ction

Гостин
Како влез функцијата ќе добие низа, поставуваш променлива од цел број на 0, пушташ еден циклус за да ја изминеш целата низа, во исто време читаш тука, за тоа кои комбинации ги има за I, V, X, C итн, со if, else if каде ќе провериш пр дали знакот што го читаш моментално е I, па ако е тоа ќе провериш што има пред и после знакот па според тоа ќе одлучиш дали е 1, 4, 6 итн, пр ако читаш I и после тоа го има знакот V на сумата ќе додадеш 4 и бројачот за знак ќе зголемиш за еден дека си прочитал и V, за во следниот циклус да не читаш пак за V. тоа е одприлика
 
Член од
10 февруари 2008
Мислења
845
Поени од реакции
447
Да се напише метод кој ќе прима еден цел број и ќе ја печати неговара репрезентација како Римски број. Пр. 1998 треба да дај излез MCMXCVIII .
Ај некој помош..
PHP:
public class ToRoman {
 
    public static String toRoman(int arabic) {
    
        StringBuilder res = new StringBuilder();
     
        int[]    numbers = { 1000,  900,  500,  400,  100,  90,
            50,  40,  10,    9,    5,    4,    1 };
 
        String[] letters = { "M",  "CM",  "D",  "CD", "C",  "XC",
          "L",  "XL",  "X",  "IX", "V",  "IV", "I" };
     
        for (int i = 0; i < letters.length; i++) {
            while(arabic >= numbers[i]) {
                res.append(letters[i]);
                arabic -= numbers[i];
            }
        }
        return res.toString();
    }
 
    public static void main(String[] args) {
        System.out.println(toRoman(1998));
    }
}
Инаку задачава да не е од АПС?
 

Kajgana Shop

На врв Bottom