Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cu ce va aparati de cainii agresi...

Nu imi platiti coletul cu cardul ...

Mi-au disparut amigdalitele ?

Exista vreun plan de terorizare p...
 Schimbare adresa DNS IPv4 pe rout...

Recomandare Barebone

Monede JO 2024

Suprasolicitare sistem electric
 CIV auto import

Mutare in MOZAMBIC - pareri, expe...

Scoatere antifurt airtag de pe ha...

Magnet in loc de clește pent...
 Cumparat/Locuit in apartament si ...

Pot folosi sistemul PC pe post de...

Sokol cu distorsiuni de cross-over

Filtru apa potabila cu osmoza inv...
 

c++ program : cate note de 7 sau 8 a avut elevul

- - - - -
  • Please log in to reply
18 replies to this topic

#1
excentryc

excentryc

    Active Member

  • Grup: Members
  • Posts: 1,498
  • Înscris: 15.07.2005
Buna... unde gresesc?

#include <iostream>
/* Se citesc notele unui elev. Sa se afle daca a avut note de 7 sau de 8 */
/* n=note; nrn=nr.note; nso=note de 7 sau 8 */
using namespace std;
int main()
{
int n, nrn, nso, i;
    cout<<" Dati nr. de note ale elevului : ";
    cin>>nrn;
    cout<<" Dati notele elevului ";
    nso = 0;
    for(i=0;i<n;i++)
  {
  cin>>n;
  if(n==7||8)
    nso = nso + 1;
    else
    nso = nso + 0;
  }
    cout<<"Elevul a avut "<<nso<<" note de 7 sau de 8 "
    ;

    return 0;
}

#2
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
n == 7 || n == 8

Ce ai tu

n==7||8

Se citeste asa:

"daca una dintre conditiile  (n==7) si conditia (8) este adevarata"

Orice numar in afara de 0 este evaluat ca adevarat, inclusiv 8, deci conditia va fi mereu adevarata.

#3
BraviaAmpero

BraviaAmpero

    Member

  • Grup: Members
  • Posts: 923
  • Înscris: 03.11.2018
n==7||8  => aici

Edited by BraviaAmpero, 10 March 2019 - 13:34.


#4
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Acestea fiind spuse, e mai bine sa te obisnuiesti cu yoda  conditions. Asa:

7 == n || 8 == n

De ce sa scrii in stanga constanta si in dreapta variabila?

Petru ca o greseala comuna e sa scrii din greseala = in loc de ==. Dar daca faci asta:

7 = n

atunci compilatorul te va avertiza: nu poti atribui valoarea lui n unei constante (aici: 7).

#5
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012

 OriginalCopy, on 10 martie 2019 - 13:36, said:

Acestea fiind spuse, e mai bine sa te obisnuiesti cu yoda  conditions. Asa:

7 == n || 8 == n

De ce sa scrii in stanga constanta si in dreapta variabila?

Petru ca o greseala comuna e sa scrii din greseala = in loc de ==. Dar daca faci asta:

7 = n

atunci compilatorul te va avertiza: nu poti atribui valoarea lui n unei constante (aici: 7).
Stiu ca stii, dar compilatorul nu te va avertiza in cazul respectiv, ci va da eroare. Probabil te va avertiza cand scrii "if (n = 7)".

Nu mi-a placut niciodata stilul asta (Yoda); arata ne-natural. Nu vrei sa compari pe 7 cu n, ci pe n cu 7...
Prefer scoaterea initializarilor din if-uri - si tratarea oricarui warning ca suspect; iar din C++17, initializarile isi au sintaxa lor.

#6
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

 TS030, on 10 martie 2019 - 13:48, said:

Nu mi-a placut niciodata stilul asta (Yoda); arata ne-natural. Nu vrei sa compari pe 7 cu n, ci pe n cu 7...
De acord, nici eu nu scriu codul asa.

Dar poate fi o unealta eficienta de "dat peste degete" cand face greseala asta pentru @OP.

Depinde de stilul fiecaruia, scopul e pana la urma sa ajunga la un nivel mai ridicat de disciplina cand scrie cod.

#7
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,441
  • Înscris: 10.08.2005
pentru aceasta problema
why not a switch ?
switch (grade)
{
	case 7:
	case 8:
		 //do something
//...
}

Quote

else nso = nso + 0;
de ce?

#8
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016

Quote

if(n==7||8)
    nso = nso + 1;
    else
    nso = nso + 0;

Ar trebui sa fie:
if (n==7||n==8)
nso++;  // incrementeaza numarul

#9
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,441
  • Înscris: 10.08.2005
Bine, dar ce rost are ramura pe false ?

#10
modoran

modoran

    Senior Member

  • Grup: Senior Members
  • Posts: 8,397
  • Înscris: 08.02.2011
Nu are nici un rost. Bucla aia "for" ruleaza la infinit ( sau nu ), "n" nu este initializat cu nimic in codul original.

#11
excentryc

excentryc

    Active Member

  • Grup: Members
  • Posts: 1,498
  • Înscris: 15.07.2005
Va multumesc ...
intre timp am mai vazut o greseala si anume:  initial am scris (i=0;i<n;i++)
                                                                              corect   (i=0;i<nrn;i++)

Edited by excentryc, 11 March 2019 - 09:42.


#12
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,441
  • Înscris: 10.08.2005

 modoran, on 10 martie 2019 - 17:01, said:

Nu are nici un rost. Bucla aia "for" ruleaza la infinit ( sau nu ), "n" nu este initializat cu nimic in codul original.
for(i=0;i<n;i++)
fie nu porneste, daca n este initializat cu zero
fie merge pana la cel mult 10
eu nu vad cazul "infinit"

#13
G1q

G1q

    Active Member

  • Grup: Members
  • Posts: 1,019
  • Înscris: 31.01.2007

 MarianG, on 11 martie 2019 - 20:17, said:

fie merge pana la cel mult 10
eu nu vad cazul "infinit"

Ma bag si eu cu o intrebare: de ce doar pana la 10 ?

#14
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,441
  • Înscris: 10.08.2005
Zece este cea mai mare nota

#15
G1q

G1q

    Active Member

  • Grup: Members
  • Posts: 1,019
  • Înscris: 31.01.2007
Asta am inteles, dar unde in acel ciclu se specifica nota maxima ca fiind 10 ? Asta nu intelegeam ...

#16
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016

 G1q, on 12 martie 2019 - 20:32, said:

Ma bag si eu cu o intrebare: de ce doar pana la 10 ?
Bună întrebare!

https://www.programi...ming/c-for-loop

https://docs.microso...lt-values-table
https://www.quora.co...-no-initializer

Dacă declari o variabilă ca int fără valoare cred că poate avea orice valoare în C++.
https://stackoverflo...-variable-value

Edited by IvanMihai, 12 March 2019 - 21:00.


#17
BraviaAmpero

BraviaAmpero

    Member

  • Grup: Members
  • Posts: 923
  • Înscris: 03.11.2018

 IvanMihai, on 12 martie 2019 - 20:55, said:

Dacă declari o variabilă ca int fără valoare
atunci ar trebui sa-i pui o valoare implicita si niciodata sa nu mai faci astfel de chestii.

#18
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,441
  • Înscris: 10.08.2005

 G1q, on 12 martie 2019 - 20:54, said:

Asta am inteles, dar unde in acel ciclu se specifica nota maxima ca fiind 10 ? Asta nu intelegeam ...
se citesc note, daca se respecta sistemul atunci n poate avea valori de la 1 la 10.

Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate