Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Incalzire in pardoseala etapizata

Suprataxa card energie?!

Cum era nivelul de trai cam din a...

probleme cu ochelarii
 Impozite pe proprietati de anul v...

teava rezistenta panou apa calda

Acces in Curte din Drum National

Sub mobila de bucatarie si sub fr...
 Rezultat RMN

Numar circuite IPAT si prindere t...

Pareri brgimportchina.ro - teapa ...

Lucruri inaintea vremurilor lor
 Discuții despre TVR Sport HD.

Cost abonament clinica privata

Tremura toata, dar nu de la ro...

Renault Android
 

Exercitiu programare din clasa a 9-a

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

#1
NHT

NHT

    Junior Member

  • Grup: Members
  • Posts: 235
  • Înscris: 08.08.2006
Salut, am nevoie de putin ajutor pt cls a 9-a. (chiar daca momentan ei fac doar pseudocod). Ultima data cand am facut programe in pascal a fost acum vreo 30 de ani Posted Image Rog pe cine are timp, sa ma lumineze si daca se poate cu explicatii. Multumesc anticipat.

in alta ordine de idei, va rog sa-mi spuneti daca gasesc un site in romana care sa aiba forum de incepatori sau probleme rezolvate.

Se da un nr de 3 cifre si trb sa se genereze cel mai mare numar care contine aceleasi cifre.

#include <iostream>
using namespace std;
int main()
{
int a; //numarul de introdus
int i; // variabila pr spargerea in matrice
cout << "Introduceti un numar din trei cifre: " << endl;
cin >> a;
int matrice [3];
for (int i = 2; i >= 0; i--)
{
matrice[i] = a % 10;
a /= 10;
}
/*
if ((matrice[0] > matrice[1]) && (matrice[0] > matrice[2]) && (matrice[1] > matrice[2]))
{
cout << "Cel mai mare numar cu aceleasi cifre este: " << matrice[0] << matrice[1] << matrice[2] << endl;
}
if ((matrice[0] > matrice[1]) && (matrice[0] > matrice[2]) && (matrice[2] > matrice[1]))
{
cout << "Cel mai mare numar cu aceleasi cifre este: " << matrice[0] << matrice[2] << matrice[1] << endl;
}
if ((matrice[1] > matrice[0]) && (matrice[1] > matrice[2]) && (matrice[0] > matrice[2]))
{
cout << "Cel mai mare numar cu aceleasi cifre este: " << matrice[1] << matrice[0] << matrice[2] << endl;
}
if ((matrice[1] > matrice[0]) && (matrice[1] > matrice[2]) && (matrice[2] > matrice[0]))
{
cout << "Cel mai mare numar cu aceleasi cifre este: " << matrice[1] << matrice[2] << matrice[0] << endl;
}
if ((matrice[2] > matrice[0]) && (matrice[2] > matrice[1]) && (matrice[1] > matrice[0]))
{
cout << "Cel mai mare numar cu aceleasi cifre este: " << matrice[2] << matrice[1] << matrice[0] << endl;
}
if ((matrice[2] > matrice[0]) && (matrice[2] > matrice[1]) && (matrice[0] > matrice[1]))
{
cout << "Cel mai mare numar cu aceleasi cifre este: " << matrice[2] << matrice[0] << matrice[1] << endl;
}
*/
//////algoritm de sortare///////
int temp; // variabila pentru permutarea termenilor in matrice
for (i = 0; i < 2; i++)
{
  do {
temp = matrice[i]; // lui temp i se atribuie val de la i
matrice[i+1] = matrice[i]; //se muta val de la i+1 la i
matrice[i+1] = temp; // la i+1 se scrie valoarea lui temp
   }
  while (matrice[i+1] > matrice[i]);
}
for (i = 0; i < 2; i++)
{
cout << matrice[i];
}
return 0;
}

#2
puiu_pe_diezel

puiu_pe_diezel

    Member

  • Grup: Members
  • Posts: 375
  • Înscris: 01.10.2018
Dar eu nu inteleg ce vrei.Doresti validarea programului de mai sus ? sau conversia lui in pascal ?

Quote

Se da un nr de 3 cifre si trb sa se genereze cel mai mare numar care contine  aceleasi cifre.
N-am stat sa ma uit pe ce ai pus tu(din start atatea if-uri deja sunt semnele unui algoritm nereusit),insa tu vrei ceva de genul :
se da : 123
sa rezulte 999999999(n)..........123 ? => cu o lungime de : sizeof(BIGINT) - 3  ?

Edited by puiu_pe_diezel, 18 October 2018 - 11:29.


#3
NHT

NHT

    Junior Member

  • Grup: Members
  • Posts: 235
  • Înscris: 08.08.2006
scuze, graba... vreau sa-l fac sa mearga in c++, asta o sa faca la scoala.

Edited by NHT, 18 October 2018 - 12:54.


#4
Stef_Stef

Stef_Stef

    Senior Member

  • Grup: Senior Members
  • Posts: 2,008
  • Înscris: 17.08.2016
sunt mai multe greseli...in alg de sortare, "do" e in afara ciclului for, "matrice[i+1] = matrice[i]; //se muta val de la i+1 la i" ai inversat i cu "i+1"

#5
pexCom

pexCom

    Senior Member

  • Grup: Senior Members
  • Posts: 2,230
  • Înscris: 15.01.2014
1. Șterge partea comentată, cea cu if-uri. Nu folosește la nimic și îngreunează la citirea codului.

2. Ai un șir cu 3 elemente. Iterează prin el până la ultimul element, nu doar prin primele două, cînd îl afișezi.
for (i = 0; i < 3; i++)

3. Algoritmul de schimbare de elemente în șir e greșit, atribui valoarea lui matrice[i] de 2 ori - și la temp și la matrice[i+1].

4. Algoritmul de sortare e greșit, bucla do... while nu face altceva decât să interschimbe fix 2 elemente din șir, dacă al doilea e mai mare ca primul ( e de fapt un if deghizat în do..while)
O soluție ar fi să înlocuiești bucla cu un alt for, care iterează prin șir pornind de la i+1:

	for (j = i + 1; j < 3; j++) {
	 // intershimbi matrice[i] cu matrice[j] dacă matrice[j] > matrice[i]
	}


Ideea cu care ai pornit e bună, obții cifrele din număr și le pui în șir, apoi încerci să sortezi șirul descrescător.

Edited by pexCom, 18 October 2018 - 14:07.


#6
MarianG

MarianG

    be that as it may

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

View PostNHT, on 18 octombrie 2018 - 10:27, said:

Salut, am nevoie de putin ajutor pt cls a 9-a. (chiar daca momentan ei fac doar pseudocod). Ultima data cand am facut programe in pascal a fost acum vreo 30 de ani Posted Image Rog pe cine are timp, sa ma lumineze si daca se poate cu explicatii. Multumesc anticipat.

in alta ordine de idei, va rog sa-mi spuneti daca gasesc un site in romana care sa aiba forum de incepatori sau probleme rezolvate.
pai aria asta pentru ce este?
dar pentru probleme rezolvate trebuie munca.

#7
MarianG

MarianG

    be that as it may

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

View PostNHT, on 18 octombrie 2018 - 12:53, said:

scuze, graba... vreau sa-l fac sa mearga in c++, asta o sa faca la scoala.
pai daca e sa mearga in C++
#include <algorithm>	// std::next_permutation, std::sort


#8
NHT

NHT

    Junior Member

  • Grup: Members
  • Posts: 235
  • Înscris: 08.08.2006
ok, multumesc tuturor.

#9
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,194
  • Înscris: 24.02.2007
Fiind vorba de doar 3 cifre, codul poate fi foarte simplu:
#include <algorithm>
#include <iostream>

int main()
{
	unsigned int numar;
	std::cin >> numar;

	unsigned int cifre[3] = { numar / 100, (numar % 100) / 10, numar % 10 };

	//exemplu 123
	if (cifre[2] > cifre[1]) std::swap(cifre[2], cifre[1]); //132
	if (cifre[1] > cifre[0]) std::swap(cifre[1], cifre[0]); //312
	if (cifre[2] > cifre[1]) std::swap(cifre[2], cifre[1]); //321

	std::cout << "Cel mai mare numar gasit: " << (cifre[0] * 100 + cifre[1] * 10 + cifre[2]);
}



Anunturi

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

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