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

  • Креатор на темата Креатор на темата back_rest
  • Време на започнување Време на започнување
Имам прашање: ако ставам ; после 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;
 
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 не е исполнет условот, но не ми е јасно зошто не преминува на следната наредба во програмата...
 
thebuddhatet

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

Инаку користи code таг кога постираш код и нели постирај во темата за ц/ц++.
 
thebuddhatet

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

Инаку користи code таг кога постираш код и нели постирај во темата за ц/ц++.
Пак се збунив, морав да прашам....и стварно не знам во која тема веќе да постирам...од секоја ме бркате :(
 
:icon_lol:
Не те бркам/е туку ти кажав кај да постираш...т.е општо за секој јазик има посебна тема и прашањата постави ги соодветно за побрзо да добиеш одговор.
 
Ако некој може да ми каже каде е проблемот во програмчето, автоматски се затвора од како ќе се изврши операцијата множење?

Код:
#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");
        }
}

фала однапред
 
DarkoG

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

Код:
#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
 
проблемо шо го јавува гласи : 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());
   
}
}
 
проблемо шо го јавува гласи : 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
 
Charlie Brown

Направи си нова класа само за "main" и таму копирај ја цела функција "main" . И секогаш практикувај секоја класа во нов фајл и после тестирај во една класа што има само main функција ништо друго.
 
Да се напише метод кој ќе прима еден цел број и ќе ја печати неговара репрезентација како Римски број. Пр. 1998 треба да дај излез MCMXCVIII .
Ај некој помош..
 
Како влез функцијата ќе добие низа, поставуваш променлива од цел број на 0, пушташ еден циклус за да ја изминеш целата низа, во исто време читаш тука, за тоа кои комбинации ги има за I, V, X, C итн, со if, else if каде ќе провериш пр дали знакот што го читаш моментално е I, па ако е тоа ќе провериш што има пред и после знакот па според тоа ќе одлучиш дали е 1, 4, 6 итн, пр ако читаш I и после тоа го има знакот V на сумата ќе додадеш 4 и бројачот за знак ќе зголемиш за еден дека си прочитал и V, за во следниот циклус да не читаш пак за V. тоа е одприлика
 
Да се напише метод кој ќе прима еден цел број и ќе ја печати неговара репрезентација како Римски број. Пр. 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

Back
На врв Bottom