Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Reverse proxy si htaccess pe Raps...

Statie de epurare sau fosa septic...

Adaptor usb3.1gigabit vs Adaptor ...

La multi ani @Atreides!
 La multi ani @KENSINGTON!

La multi ani @burebista!

La multi ani de Florii!

Stihl fs 70 c-e
 Challengers (2024)

Care mai sunt mediile de admitere...

Laptop cu HDD atasare memorie MMC...

Hartile google nu mai au chenarul...
 Tomate in ghiveci la curte?

Idei cale de actiune recuperare g...

Intoleranța lactoza- vegan v...

Tobe acustice insonorizare in blo...
 

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,243
  • Î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,445
  • Î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,445
  • Î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,240
  • Î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

Bun venit pe Forumul Softpedia!

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