Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Dacia 1316 cu 6 usi ...

Frecventa modificata radio

Un nou pericol pt batrani

Ar trebuii sa vindem imobiliarele...
 Dupa renuntarea la aparat dentar

pelerinaj in Balcik

Noul format Jpegli iși propu...

Dade, dade
 Probleme accesare nr test telefon

Parola la lock screen

Deparazitare externa pisici fara ...

Seriale turcesti/coreene online H...
 Merita un Termostat Smart pentru ...

Sfat achizitie MTB Devron Riddle

Problema mare cu parintii= nervi ...

switch microtik
 

Declarare sir.

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

#1
Irbaa

Irbaa

    Junior Member

  • Grup: Junior Members
  • Posts: 54
  • Înscris: 15.03.2022
Se dau 4 numere intregi care se citesc de la tastatura. Iar sirul care se formeaza trebuie declarat ca fiind "Crescator" , " Descrescator" sau "Aleatoriu", dupa caz.
Eu m-am gandit sa o fac asa :
#include <iostream>
using namespace std;
int main() {
  int a , b , c , d;
  cin >> a >> b >> c >> d;
   if ( a >= b && a >= c && a >= d) {
   if ( b >= c && b >= d ) {
   if ( c >= d) {
   cout << "Descrescator";
   } else {
   cout << "Aleatoriu";
   }

   } else {
   cout << "Aleatoriu";
   }
  
   }
  
  
    if ( d >= a && d >= b && d >= c) {
   if ( c >= b && c >= a ) {
   if ( b >= a ) {
cout << "Crescator";
    } else {
    cout << "Aleatoriu";
    }
   } else {
   cout << "Aleatoriu";
   }
   }

return 0 ;
}

Dar evident, nu e bine in totalitate! Conditiile de rezolvare ale acestei probleme e doar cu if si else. Daca cineva stie o metoda mai practica si mai simpla,as fii recunoscator pentru eventualul ajutor acordat.

#2
sftpdt

sftpdt

    Senior Member

  • Grup: Senior Members
  • Posts: 3,665
  • Înscris: 29.08.2013
Pentru cazul general (oricate elemente), poti compara primele doua elemente.
Daca ele sunt crescatoare, verifica ca elementele urmatoare sa fie crescatoare, caz in care afisezi "Crescator", altfel "Aleatoriu".
Similar, daca primele doua sunt descrescatoare, verifica ca elementele urmatoare sa fie tot descrescatoare, caz in care afisezi "Descrescator", altfel "Aleatoriu".

Edited by sftpdt, 15 March 2022 - 20:17.


#3
LuvRaluK

LuvRaluK

    Active Member

  • Grup: Members
  • Posts: 1,579
  • Înscris: 27.09.2006
De ce verifici primul element din sir cu fiecare din celelalte, respectiv ultimul element din sir cu fiecare din celelalte?
Pentru ca un sir sa fie descrescator nu ar trebui ca a>=b && b>=c &&c>=d?
Analog, pentru un sir crescator ar trebui ca a<=b && b<=c && c<=d, nu?
Si daca nici una din conditiile de mai sus nu e indeplinita, sirul e aleatoriu.

#4
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,557
  • Înscris: 06.03.2016
Limita de 4 numere poate fi modificata / scoasa.

#include <iostream>
using namespace std;
int main()
{
	const int n = 4;
	int v[n] = {0};
   
	bool crescator = true, descrescator = true;
   
	for (int i = 0; i < n; ++i)
		cin >> v[i];
	   
	for (int i = 0; i < n - 1; ++i)
	{
		crescator = v[i] < v[i + 1] && crescator;
		descrescator = v[i] > v[i + 1] && descrescator;
	   
		if (!crescator && !descrescator)
		{
			cout << "Aleatoriu";
			break;
		}
	}
   
	if (crescator)
		cout << "Crescator";
	else if (descrescator)
		cout << "Descrescator";
   
	return 0;
}


Edited by red46, 15 March 2022 - 20:46.


#5
Irbaa

Irbaa

    Junior Member

  • Grup: Junior Members
  • Posts: 54
  • Înscris: 15.03.2022
LuvRaluK , asa este! Sunt un prost! In disperarea mea de a nu gresi am omis cea mai simpla si eficienta metoda! Iti multumesc!

#6
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 20,033
  • Înscris: 24.02.2006

 LuvRaluK, on 15 martie 2022 - 20:16, said:

Pentru ca un sir sa fie descrescator nu ar trebui ca a>=b && b>=c &&c>=d?
Analog, pentru un sir crescator ar trebui ca a<=b && b<=c && c<=d, nu?
Si daca nici una din conditiile de mai sus nu e indeplinita, sirul e aleatoriu.

si daca toate sunt indeplinite? e posibil ca a == b == c == d :)
cred ca trebuie ca macar una din relatii sa fie stricta (> respectiv <, in loc de >= respectiv <=)

#7
Irbaa

Irbaa

    Junior Member

  • Grup: Junior Members
  • Posts: 54
  • Înscris: 15.03.2022
Poi nici asa nu merge , ca asa nu ai acoperii toate combinatiile de termeni fiindca nu specifica ca toti sa fie distincti . Poti avea 1 1 2 3 sau 2 2 3 4 sau 1 3 3 5 , care toate sirurile sunt crescatoare. Am incercat sa adaug o conditie cum ca atunci cand toate sunt egale sa-mi dea "Aleatoriu" ( fiindca am uitat sa specific, in problema imi spune ca in cazul in care toate sunt egale se considera sir "Aleatoriu")
da degeaba, ca-mi da eroare de compilare . Mai exat imi da asta " prog.cpp: In function 'int main()':
prog.cpp:6:12: warning: suggest parentheses around comparison in operand of '==' [-Wparentheses]
if ( a == b == c == d) {"
Iar programul meu arata cam asa  :
#include <iostream>
using namespace std;
int main() {
    int a, b , c , d ;
    cin >> a >> b >> c >> d;
    if ( a == b == c == d) {
    cout << "Aleatoriu";
    }
else  if ( a >= b && b >= c && c >= d ) {
   cout << "Descrescator";
   }
  else if ( a <= b && b <= c && c <= d) {
  cout << "Crescator";
  }
  
  else {
  cout << "Aleatoriu";
  }  
return 0;
}

#8
MarianG

MarianG

    be that as it may

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

 Irbaa, on 16 martie 2022 - 07:32, said:

Poi nici asa nu merge , ca asa nu ai acoperii toate combinatiile de termeni fiindca nu specifica ca toti sa fie distincti .
si daca iti prezint 32 de numere, tot asa o sa imi creezi toate posibilitatile ?

#9
Irbaa

Irbaa

    Junior Member

  • Grup: Junior Members
  • Posts: 54
  • Înscris: 15.03.2022
Folosind doar "if" si "while" ? Presupun ca da.

#10
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,557
  • Înscris: 06.03.2016
Pai tu folosesti doar if-uri, nu si while.
Daca utilizatorul vrea sa introduca un sir cu n elemente, ce faci?

#11
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,238
  • Înscris: 24.02.2007
Asta-i genul de probrlema ce se da cand abia ai invatat ce e o variabila sau if.

Siruri cu n elemente mai tarziu...

#12
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,443
  • Înscris: 10.08.2005
Pai in cazul asta sa vedem un tabel de adevar.

#13
Irbaa

Irbaa

    Junior Member

  • Grup: Junior Members
  • Posts: 54
  • Înscris: 15.03.2022
Scuza-ma red, am vrut sa zic doar if si else ....
MarianG , nu stiu ce este acela tabel de adevar, imi poti arata?

#14
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,443
  • Înscris: 10.08.2005
Attached File  tabel_adevar.png   3.46K   20 downloads

Edited by MarianG, 16 March 2022 - 18:11.


#15
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,443
  • Înscris: 10.08.2005
0 0 0
0 0 1
0 0 2
0 1 0
0 1 1
0 1 2
0 2 0
0 2 1
0 2 2
1 0 0
1 0 1
1 0 2
1 1 0
1 1 1
1 1 2
1 2 0
1 2 1
1 2 2
2 0 0
2 0 1
2 0 2
2 1 0
2 1 1
2 1 2
2 2 0
2 2 1
2 2 2 
Iti ramane tema, folosind "if" si "else" sa completezi tabebul dupa exemplu din postul anterior

Edited by MarianG, 19 March 2022 - 03:23.


#16
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,443
  • Înscris: 10.08.2005
pai da, faci tabel si te verifici daca ai rezultate corecte.

Nu stiu ce ti-a venit cu divizibiltatea numerelor, aici vorbim despre siruri.

Iar eu in generarea tabelului am folosit while, impartire si modulo

P.S. tema pe care ti-am prezenat-o eu nu are restrictii, doar cerinta de a completa tabelul.

Edited by MarianG, 22 March 2022 - 20:50.


#17
Irbaa

Irbaa

    Junior Member

  • Grup: Junior Members
  • Posts: 54
  • Înscris: 15.03.2022
Salut. Scuza-ma Marian dar nu stiu sa fac tabelul. Ce trebuie sa fac? Sa inlocuiesc a , b si c cu valorile pe care mi le-ai dat?

#18
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,443
  • Înscris: 10.08.2005
Ai exemplu in imaginea din postul #14

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