Jump to content

bogdanvaduva

Members
  • Posts

    14
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

bogdanvaduva's Achievements

Newbie

Newbie (1/14)

1

Reputation

  1. @kznamst multumesc mult de sfat. O zi faina
  2. Salut, Impreuna cu cativa prieteni am hotarat sa pornim un site si as vrea sa va intreb care este cea mai buna varianta de a obtine un domeniu + hosting. Stiu ca exista site-uri, am cautat, am gasit ceva oferte insa ma gandeam ca poate stiti voi altele mai bune. Sper ca nu am deranjat cu acest post. Seara faina
  3. Daca mai este nevoie, lasa-mi pm
  4. Ok, sigur. Imi cer scuze ca nu m-am gandit la asta dinainte. Aici este codul. err(E,V1) :- pair(E, _), E = 'if' ,V1 = 0,!. err(E,V1) :- pair(E, _), E = 'then' ,V1 = 0,!. err(E,V1) :- pair(E, _), E = 'else' ,V1 = 0,!. err(E,V1) :- pair(E, _), E = 'while' ,V1 = 0,!. err(E,V1) :- pair(E, _), E = 'return' ,V1 = 0,!. err(E,V1) :- atom_chars(E,Res), errAux(Res, V1). /* *facem verificarea ca nu cumva variabila sa fie unul din cuvintele if, then, else, while, return *iar daca nu este, atunci vom sparge variabila intr-o lista de char-uri, pe care le vom verifica cu *functia auxiliara errAux */ errAux([], R) :- R is 1,!. errAux([H|T], R) :- char_code(H, Asc), Asc > 47, Asc < 58, R is 0,!. errAux([H|T], R) :- char_code(H,Asc), errAux(T,R). /* *Ok, acum avem lista, de exemplu pentru "ana2" vom avea [a, n, a, '2']. *Avand in vedere ca 2 este tratat ca si string (daca am inteles eu bine) *Vom verifica codul ascii pt fiecare, iar daca se afla intre 47 si 58 atunci vom intoarce 0 *apoi verificam urmatorul element si asa mai departe */ err([H|T],V1) :- V1 = 1,!. //daca nu a fost gasita o cifra, vom intoarce 1 In prima parte am verificat daca este cumva unul din cuvintele care nu trebuie, iar in Aux am verificat chestia cu codul ASCII. Practic, primind o lista, exact cum am spus mai sus, am verificat fiecare element sa fie litera, iar daca nu este (linia 2 din errAux), atunci vom intoarcea valoarea 0 (incorect). Altfel, vom parcurge pana la finalul listei si daca nu vom gasi, vom intoarce 1 (corect), adica ultima linie. Nu stiu cat de explicit am fost, dar sper sa ajute.
  5. Salut, era vorba doar de putin lucru cu codul ASCII al literelor/cifrelor. E ceva de genul: cifele sunt intre 48 si 57 si restul sunt litere, si practic daca gaseai un cod ascii de enul asta dupa ce foloseai atom_chars() care iti transforma de ex: "cuvant2" in [c, u, v, a, n, t, '2'], nu trebuia decat sa intorci un cod de eroare. (in cazul meu am intors 0) Pot atasa si codul daca vrei.
  6. Am reusit, pana la urma, sa ii dau de cap. Va multumesc mult pt raspunsuri!
  7. Salut, iti multumesc mult pt sfat. Ideea este ca am inceput sa invat si alte limbaje decat cele imperative. Haskell-ul pot spune ca am reusit sa il stapanesc, dupa aproape 3-4 luni de lucrat, iar acum incerc sa invat bazele Prolog-ului.
  8. Salut, sunt deestul de nou in ceea ce priveste Prolog-ul si am intampinat putine dificultati. Mai exact , am de facut urmatorul lucru: sa interpretez un program de genul: x = 2; y = 3; if (x < y){ a2 = 1; } return a2; Ideea e ca am reusit sa fac assignarile (pentru x = 2, y = 3 si asa mai departe) dar nu este permis ca numele unei variabile sa fie IF, WHILE, ELSE, RETURN, THEN si de asemenea, variabila trebuie sa contina doar litere. Adica acest cod, imi va intoarce o eroare de tipul "Incorrect variable name". Are cineva idee cum pot sa verific?
  9. Salut, Am intalnit urmatoarea problema. Primesc un char * care reprezinta un ip. Ideea e ca eu trebuie sa compar mai multe ip-uri, dar, trebuie ca ele sa fie transformate in int32_t, adica numere pe 32 de biti. Are cineva idee cum se face asta? Initial am incercat ceva de genul asta #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdarg.h> int main (){ char * buffer; int sum = 0, i; buffer = (char*)malloc(100*sizeof(char)); scanf("%s", buffer); int32_t x; x = (int32_t)buffer; printf("%zu\n", x); } Am mai incercat la afisare sa fac cu %lo dar nu am obtinut nimic. Are cineva idee :D?
  10. Mm, de acord, dar ca sa fiu sigur ca retin o valoare pentru fiecare variabila, nu mi-ar trebui cumva o lista de tupluri? Gen functia mea sa devina returnExpresie :: Expr ->[(String, Int)] -> Int Acum, ideea e ca nu stiu cum sa fac sa ma joc cu tipul asta de functie astfel incat sa retin valori pentru variabile. Ar trebui sa retin valori pentru acele variabile cu patternul returnExpresie (Symbol x) intr-o lista, si acea lista sa o dau ca parametru la fiecare expresie. Dar nu stiu cum as putea face asta
  11. Mai am o intrebare, daca se poate, desigur. Am reusit sa imi defineesc o functie care imi intoarce urmatoarele: data Expr = Add Expr Expr | Sub Expr Expr | Mult Expr Expr | Equal Expr Expr | Smaller Expr Expr | Symbol String | Value Int deriving (Show, Read) returnExpresie :: Expr -> Int returnExpresie (Value x) = x returnExpresie (Add ex1 ex2) = (returnExpresie ex1 ) + (returnExpresie ex2 ) returnExpresie (Sub ex1 ex2) = (returnExpresie ex1) - (returnExpresie ex2) returnExpresie (Mult ex1 ex2) = (returnExpresie ex1) * (returnExpresie ex2) returnExpresie (Equal ex1 ex2) = if (returnExpresie ex1 ) == (returnExpresie ex2) then 1 else 0 returnExpresie (Smaller ex1 ex2) = if (returnExpresie ex1 ) < (returnExpresie ex2) then 1 else 0 returnExpresie (Symbol s) = undefined Asa cum probabil ati inteles, functia mea evalueaza o expresie in functie de parametrul primit. Exemplele sunt urmatoarele (Add (Value 1) (Value 2)) = va intoarce desigur valoarea 3 Dilema mea este ca atunci cand voi avea (Symbol "x") ar trebui sa transform acel string "x" intr-o variabila x de tipul int. Ma gandesc ca s-ar face cu functia predefinita read insa nu am o idee clara despre cum as putea sa faca cest lucru. O alta problema ar mai fi ca ar trebui sa salvez aceasta variabila astfel in cat sa fie accesibila programului, pentru a ii putea assigna valori mai tarziu. M-am blocat aici Tin sa va multumesc pentru sprijin, tuturor, au fost de foarte mare ajutor in ceea ce priveste intelegerea logica a acestui limbaj.
  12. Am citit pana la capitolul 7, dar nu am apucat sa exersez foarte mult si se apropie deadline-ul la assignment. Acum am inceput sa pun in practica ce am invatat si incerc sa inteleg pas cu pas, sa fiu sigur ca stiu ce fac.
  13. Multumesc foarte mult pentru raspuns @Ana-Cristina! Si imi cer scuze, sunt nou si sunt convins ca nu toate intrebarile mele sunt tocmai pertinente. Dar vreau sa inteleg cat mai bine limbajul si felul cum ar trebui sa functioneze un limbaj de programare non-imperativ. Pana acum am luat legatura doar cu limbajele imperative cum ar fi java sau c++.
  14. Salut, Sunt oarecum nou in ceea ce priveste Haskell si am o problema legata de un mic program care ar trebui sa imi returneze un intreg atunci cand primeste un tip de date "Value" sau "Symbol" Am urmatorul tip de date abstract: data Expr = Symbol String | Value Int deriving (Show, Read) Si ar trebui sa definesc cate o functie pentru cele 2 cazuri, care sa imi returneze int-ul din expresie. Ma gandesc ca ar trebui sa fie ceva de genul asta: returnInt :: Expr -> Int returnInt Value x = x | Symbol x = x Dar nu sunt convins ca e chiar ok. Ma poate ajuta cineva? Multumesc
×
×
  • Create New...