Exercitiu programare din clasa a 9-a
Last Updated: Oct 19 2018 18:25, Started by
NHT
, Oct 18 2018 10:27
·
0
#1
Posted 18 October 2018 - 10:27
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 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
Posted 18 October 2018 - 11:25
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. 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
Posted 18 October 2018 - 12:53
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
Posted 18 October 2018 - 13:09
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
Posted 18 October 2018 - 14:03
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
Posted 18 October 2018 - 14:06
NHT, 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 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. dar pentru probleme rezolvate trebuie munca. |
#7
Posted 18 October 2018 - 16:17
#9
Posted 19 October 2018 - 18:25
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