O problema de la lectia subprograme, folosita cu functii:
Se citeste de la tastatura un sir de numere.Cate numere pozitive si cate negative sunt in sir? Se va folosi o functie.
In Pascal, as vrea o rezolvare.
Multumesc!
Inregistrati-va pentru a beneficia de cunostintele comunitatii, a pune intrebari sau a a raspunde la intrebarilor celorlalti.
Suntem o comunitate care incurajeaza educatia si in care se intalnesc know-how-ul si experienta cu perspective inovative de abordare a problemelor.
Autentificati-va pentru a pune intrebari, a raspunde la intrebarilor celorlalti sau pentru a va conecta cu prietenii.
V-ati uitat parola ? Introduceti adresa de email si veti primi o noua parola.
Please briefly explain why you feel this question should be reported.
Va rugam explicate, pe scurt, de ce credeti ca aceasta intrebare trebuie raportata.
Motivul pentru care raportezi utilizatorul.
Salut!:)
Nu cred ca e cea mai buna solutie, dar o atasez in orice caz.
Sper sa iti fi fost de ajutor!
Cu multa placere!:D
Mersi mult! Informatica asta mi se pare foarte grea tinand cont ca mai fac si intensiv dupa ore.Ce mi-as dorit eu sa fac matematica intensiv, acolo imi place mie sa ma implic.🙁
1. L-ai considerat pe 0 negativ din cate observ, ceea ce zic eu ca nu e tocmai bine. (de obicei 0 se ia pozitiv in caz ca nu se poate scapa de cazu` asta)
2. Te-ai complicat la neg ala…nu-ti tb variabila aia. Daca ai calculat poz bine…atunci ca sa afli numerele negative nu-ti ramane decat sa scazi din total numerele pozitive neg=n-poz…si-l scrii direct la afisare…deci n-ai nevoie de aceasta variabila…suplimentara.
Am zis asta pentru a optimiza solutia in caz ca ai f multe date de intrare operatiile suplimentare ingreuneaza executia programului.
Eu in general imi declar o variabila f mare 1.000.000 inainte de program care reprezinta nr de elemente maxim al vectorului.
3. La citirea datelor sunt iara probleme…ca tot mi-am adus aminte…nu tb folosit vector in caz ca stii cate elemente sunt. Pur si simplu citesti o variabila si lucrezi cu ea. (tot ptr optimizare).
Cam atat.
Daca nu ma crezi in ceea ce am zis poti sa incerci sa pui niste parametri care sa-ti calculeze timpu` de executie. Ai sa vezi diferente uriase ptr n>1000000 daca faci programul cum ti-am zis…fata de cum l-ai facut.
Sper ca nu te-ai suparat!
@andu_flavius95: Cu multa placere! Te rog sa citesti si ce a spus Blaugranas, sunt sigur ca te va ajuta!:) Informatica nu e neaparat grea, dar e complicat daca ai inceput-o abia acum (ma refer aici la faptul ca putea fi studiata dinainte de scoala). Daca ai un aparat matematic bun (si sunt sigur ca il ai!), atunci sunt sigur ca vei pricepe si informatica.
@Blaugranas: Iti multumesc! Nu m-am suparat chiar deloc, ci dimpotriva m-ai lamurit in mare parte de ce mi se parea programul prea lung. In privinta contorului pentru numerele negative sunt de acord cu ceea ce ai spus. Partea cu nu am sesizat-o, dar cred ca era mai bine sa fac cum ai spus tu.
In privinta vectorului..🙂 ai si aici mare dreptate! Cred ca ar fi bine ca programul sa fie optimizat folosind sugestiile tale!:) Scriu acest lucru pentru andu_flavius95.
Multumesc din nou pentru observatii/sugestii! Sunt sigur ca le voi lua in considerare pe viitor!
Va multumesc mult pt. raspunsuri.Intr-adevar mi-e putin mai greu cu informatica deoarece este de abia al 2 an de studiu inceput, tinand cont ca in gimnaziu nu am facut deloc.Dar o sa incerc prin munca sa ajung macar la acelasi nivel ca la matematica.
Cu multa placere!:) Sunt sigur ca vei reusi daca ai vointa!
E nasol cu pascal-ul asta. Chiar nu inteleg dc se mai preda in scoli si licee. „Lumea buna” vad ca trece de pascal si invatza C,C++… ceea ce consider eu ca e un lucru bun. Programele scrise in C sunt mult mai rapide ca cele cu cod asemanator din pascal. Eu lucrez probleme de pe un site…iar acolo cu surse de pascal n-ai nici o sansa sa iei maxim de puncte. C-ul se comporta foarte bine acolo. Eu personal sunt mai mult decat incantat ca lucrez in C…ii compatimesc pe saracii liceeni care n-au nici o vina la urma urmei…si lucreaza in pascal. La concursuri, olimpiade nu conteaza in ce limbaj scrii dar comportamentu` C-ului e fantastic…in comparatie cu alte limbaje de programare! andu_flavius95 iti sugerez sa-ti faci nitel timp (daca ai) sa incerci sa invetzi C in loc de pascal daca te pasioneaza…daca nu..las-o asha.
Dar, C++ nu am studiat inca la intensiv si chiar nu stiu daca incep anul acesta studiul sau.
De abia am inceput intensiv si am facut pana acum in pascal subprogramele (doar functiile pana acum).
andu…nu C++ am zis C. E diferenta intre cele 2 , + ma indoiesc ca facetzi C++ e prea greu ptr liceeni. Din ce am observat eu…profii se lauda ca predau C++ …dar de fapt e C …cu mici modificari…citire cu streamuri ca in C++…sunt vrajeli astea. Ti-ash scrie programu` modificat cum a zis PhantomR dar numai ca nu am compilator de pascal…si nici nu folosesc…si nici nu vreau sa folosesc . Ti-l scriu in C, cu cea mai mare placere…daca vrei!
Scuze de greseala.Nu prea am auzit de C ,mai mult de C++.Daca, daca se poate as dori sa vad cum arata in C.Multumesc.
Nu-ti fa griji, l-am scris eu. Sper sa nu fi omis sau sa fi scris vreo prostie. Multumesc inca o data!
Imi cer scuze ca ma bag in discutia voastra. Problema cu Pascal este ca multi dintre profesorii actuali de informatica l-au studiat pe acesta in facultate si pe atunci nu cred ca se facea C/C++. De aceea ei nu pot preda ceva ce nu cunosc sau ceva ce nu cunosc destul de bine. Un avantaj pe care il are Pascal este ca e mult mai usor de inteles si are comenzi mai usor palpabile de catre cei care abia il incep.
Am atasat fisierul (cred eu) „imbunatatit” mai jos.
#include<stdio.h> //biblioteci
#include<conio.h>
long n,p,x,t; //variabile globale
int poz(int x) //functie
{return (x>=0);} //daca x>=0 functia intoarce 1 altfel 0
int main() //program principal
{scanf(„%ld”,&n),t=n; //citim nr de elemente
while(n–) //scadem contorul (n) si-l comparam cu 0
{scanf(„%ld”,&x); //in caz ca-i diferit trece la citirea lu` x
if(poz(x)) //apel functie daca poz(x)==1
p++;} //incrementam p
printf(„%ld %ld”,p,t-p); //p retine nr de numere pozitive iar t-p
getch(); //retine nr numerelor negative
return 0;} //getch() ajuta la afisare „sa nu fuga”ecranu` iar return 0 se pune ca asha vrea int de la main
E ok PhantomR…n-am nimic de obiectat😀
Ma bucur!😀 As avea o intrebare (banuind ca ai studiat si C++): Care ti se pare mai practic? Noi la scoala facem C++ (Visual C++ 6.0, o versiune mai veche) si mi se pare mai accesibil decat C care mi se pare complicat cu acele %s si %d.
Fiecare (C , C++ ) are avantajele si dezavantajele lui.😀
Avantaje C : din cate am observat eu se comporta f bine functiile de citire si scriere scanf,fscanf si printf,fprintf…cand datele sunt ceva mai putine (<1 milion.. aici e la citire), la scriere n-am vazut diferente semnificative. Depinde si cat de lung e siru` (sir de caractere „%s”) daca e scurt mai bine scanf,fscanf.
Dezavantaje C : ptr date multe…am observat ca timpii sunt slabi si difera de la executie la executie.
Avantaje C++ : streamurile din C++ sunt eficiente cum am zis…si mai sus cand datele de intrare respectiv iesire sunt mai multe….>1 milion. Cand vrei sa citesti de exemplu un nr de tip long long sau unsigned long long e bine sa folosesti stream-uri fiindca scanf…si fscanf se chinuie…si poti avea si surprize neplacute la fel si la afisare.
Dezavantaje C++ : cand lucrezi cu >> si << …si ai in program si operatori de deplasare pe biti…cu acelas semn ca mai sus…programu` se cam rupe in 2 nu prea stie ce sa creada saracu` compilator…adica ce vrei u sa faci …>> sa citesti sau sa deplasezi un bit la dreapta, sau << sa scrii sau sa deplasezi un bit la stanga. Ai inteles ceva?
Am inteles marea majoritate (pe cea cu bitii nu in totalitate, dar cred ca am prins putin ideea). Multumesc mult pentru timpul si explicatiile acordate!:D
x=17 reprezentarea binara a lu` este 10001
x>>=1 rezulta x=8 deoarece se taie ultimu` bit si ramane 1000
x>>=1 rezulta x=4 deoarece se taie ultimu` bit si ramane 100
etc
x<<=1 rezulta x=34 deoarece se pune un bit 0 dupa ultimu` devine 100010.
x<<=1 rezulta x=68 deoarece se pune un bit 0 dupa ultimu` devine 1000100.
etc
Ei bine >>,<< pot fi confundate cu citirile cout<<… cin>>…
De-aia compilatoru` intarzie un pic…ca tb sa se prinda ce tb sa faca.
x>>=1 egal cu alte cuvinte cu x/=2 sau altfel scris x=x/2
x<<=1 egal cu alte cuvinte cu x*=2 sau altfel scris x=x*2
Sper ca acum ai inteles.
N-ai ptr ce.
Interesant😀 ! Iti sunt recunoscator ca ti-ai pierdut atata timp lamurind un prost. Nu mai continui caci nu as vrea sa facem si mai mult off-topic 🙂 .
Noapte buna!
Multumesc ! Intr-adevar este interesanta rezolvarea in C.
Dar, as vrea sa intreb:
Banuiesc ca amandoi ati terminat liceul de ceva timp, nu?De curiozitate.
Eu acum am trecut in clasa a X-a.🙂 Mai am mult pana sa termin 😆 .
Exact ca mine, si eu sunt tot in clasa a 10.😀
Ma bucur sa „intalnesc virtual” pe cineva de (aproape) aceeasi varsta cu mine.😀