MOPT - Lògica i programacio / Pseudocodi: Exercicis Pseudocodi

De wikiserver
La revisió el 11:38, 26 feb 2025 per Rsort (Discussió | contribucions) (Exercicis programació estructurada)
Dreceres ràpides: navegació, cerca

Exercicis Seqüencials

1. Escriu un algorisme amb pseudocodi que demani al usuari el seu nom, i a continuació escrigui una salutació.

2. Calcular el perímetre i l'àrea d'un rectangle atesa la base i l'alçada.

3. Calcular la hipotenusa d'un triangle rectangle a partir dels seus catets.

4. Escriu un algorisme amb pseudocodi que demani dos valors numèrics, intercanviï els valors de les variables, i mostri les variables amb els valors intercanviats.

Exercicis estructura alternativa

1. Escriu un algorisme que demani un número i digui si és positiu, negatiu o 0.

2. Escriu un algorisme en pseudocodi que demani un nom d'usuari i una contrasenya i si s'ha introduït "pcarbonell" i "pc1673" s'indica "Has entrat al sistema", sinó hi ha un error.

3. Algorisme que demani dos números 'nota' i 'edat' i un caràcter 'sexe' i mostri el missatge 'ACCEPTADA' si la nota és major o igual a cinc, l'edat és més gran o igual a divuit i el sexe és 'F'. En cas que es compleixi el mateix, però el sexe sigui 'M', heu d'imprimir 'POSSIBLE'. Si no es compleixen aquestes condicions cal mostrar 'NO ACCEPTADA'.

4. L'associació de vinicultors té com a política fixar un preu inicial al quilo de raïm, la qual es classifica en tipus A i B, i a més en mides 1 i 2. Quan es realitza la venda del producte, aquesta és d'un sol tipus i mida, es requereix determinar quant rebrà un productor pel raïm que lliura en un embarcament, considerant el següent:

  • Si és de tipus A, se li carreguen 20 cèntims al preu inicial quan és de mida 1; i 30 cèntims si és de mida 2.
  • Si és de tipus B, es rebaixen 30 cèntims quan és de mida 1, i 50 cèntims quan és de mida 2.
  • Realitzeu un algorisme per determinar el guany obtingut.

5. Utilitzant l'estructura Segun ..., fes un algorisme en pseudocodi que demani el nom i preu original d'un article i el codi de descompte (si el codi és 1 els descompte és del 10%, si el codi és 2 el descompte és del 15%, si el codi és 3 el descompte és del 20%, altrament el descompte és del 0%. Cal mostrar l'article, el preu original, el descompte i el preu final.

6. Utilitzant l'estructura Segun ..., fes un algorisme en pseudocodi per calcular l'àrea de qualsevol de les següents figures geomètriques: Quadrat, Rectangle, Triangle i Cercle.

Exercicis estructura repetitiva

Para

1. Crea una algorisme amb pseudocodi que demani un número i calculi el seu factorial (El factorial d'un nombre és el producte de tots els enters entre 1 i el mateix nombre i es representa pel nombre seguit d'un signe d'exclamació. Per exemple 5! = 1x2x3x4x5=120)

2. Feu un algorisme que imprimeixi tots els números parells entre dos números que se li demanin a l'usuari.

3. Realitzar un algorisme que demani números (es demanarà per teclat la quantitat de números a introduir). El programa ha d'informar de quants números introduïts són més grans que 0, menors que 0 i iguals a 0.

4. Feu un algorisme que demani un número ente 1 i 10 i mostri la seva taula de multiplicar.

5. Feu un algorisme que mostri les taules de multiplicar del 1 al 10.

6. Una empresa té el registre de les hores que treballa diàriament un empleat durant la setmana (sis dies) i requereix determinar-ne el total, així com el sou que rebrà per les hores treballades.

7. Una empresa paga als seus empleats amb base a les hores treballades a la setmana.

Realitzeu un algorisme per determinar el sou setmanal de N treballadors i, a més, calculeu quant va pagar l'empresa pels N empleats.

Mientras

1, Crea un algoritme amb pseudoci que permeti endevinar un número. L'aplicació genera un número aleatori de l'1 al 100. A continuació va demanant números i va responent si el nombre a endevinar és més gran o més petit que l'introduït, a més dels intents que et queden (tens 10 intents per encertar-ho).

El programa acaba quan s'encerta el número (a més et diu quants intents ho has encertat), si s'arriba al límit d'intents et mostra el número que havia generat.

2.Algorisme que demani números fins que s'introdueixi un zero. Heu d'imprimir la suma i la mitjana de tots els números introduïts.

3. Crea una aplicació que demani un número i calculi el seu factorial (El factorial de un nombre és el producte de tots els enters entre 1 i el mateix nombre i es representa pel nombre seguit d'un signe d'exclamació.

Per exemple 5! = 1x2x3x4x5=120

4. Feu una algorisme amb pseudocodi que digui si un número introduït per teclat és primer o no.

Un nombre primer és aquell que només és divisible entre ell mateix i la unitat.
Nota: N'hi ha prou amb provar fins a l'arrel quadrada del número per veure si és divisible per algun altre número.

5. Escriviu un algoritme amb pseudocodi que demani el límit inferior i superior d'un interval.

Si el límit inferior és més gran que el superior ho ha de tornar a demanar.
A continuació es van introduint números fins que introduïm el 0.
Quan acabi el programa donarà les informacions següents:
  • La suma dels números que estan dins de l'interval (interval obert).
  • Quants números estan fora de l'interval.
  • He informat si hem introduït algun nombre igual als límits de l'interval.


Més exercicis iteratius

1. Calculeu les qualificacions d'un grup d'alumnes. La nota final de cada alumne es calcula segons el criteri següent: la part pràctica val el 10%; la part de problemes val el 50% i la part teòrica el 40%. L'algorisme llegirà el nom de l'alumne, les tres notes, escriurà el resultat i tornarà a demanar les dades del següent alumne fins que el nom sigui una cadena buida. Les notes han d'estar entre 0 i 10, si no ho estan, no imprimirà les notes, mostrarà un missatge d'error i tornarà a demanar un altre alumne.

2. Un conductor d'UBER va prendre el temps (en minuts) que es va demorar des del punt de partida fins a la destinació. Elaboreu un algorisme amb pseudocodi que permeti ingressar cadascun dels temps en minuts i que mostri:

a) La mitjana dels temps
b) El nombre de vegades que es va demorar menys de 30 minuts
c) El nombre de vegades que es va demorar entre 30 a 45 minuts i
d) Finalment el nombre de vegades que es va demorar més de 45 minuts.

Exercicis proves

Prova 1

1. Demana un número enter positiu per teclat. Si el número és senar, el multipliquem per 3 i li sumem 1, si és parell el dividim per 2. Repetim aquest procés amb el nou valor acabant quan el número és 1. Per exemple, la següent seqüència és generada quan N=22:

22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1

Fes un programa que fent aquests passos ens digui la quantitat de números generats fins a aconseguir arribar a l'1. A l'exemple anterior seria 16.

2. Llegirem dos números que representaran una data, el primer representa el dia i el segon representa el mes. Cal dir quina data serà després de cinc dies (suposarem que febrer té sempre 28 dies)

Exemples:

Entrada: 28 3 Sortida: 2/4
Entrada: 27 12 Sortida: 1/1
Entrada: 26 2 Sortida: 2/3

3. Donat un missatge secret de 10000 caràcters cal saber si dins aquest missatge apareix la seqüència “XY” (els dos caràcters seguits). Només cal dir si apareix o si no apareix.

4. Donat un número entrat per teclat cal escriure el primer divisor d’aquest número. Aquest ha de ser diferent de 1 i del mateix número. Si no hi hagués cap, sortirà un missatge que informi d'això.

5. Una línia horitzontal la definim per les dues coordenades x dels dos extrems. Un punt es troba a la mateixa línia horitzontal i s'estableix amb la seva coordenada x.

El programa llegirà tres números, els dos primers seran els extrems de la línia (no tenen perquè estar ordenats) i el tercer serà la coordenada del punt. El programa ha de respondre si el punt està dins la línia i la distància a l’extrem més proper.

Exemples:

Entrada: 10 5 7
5        7            10
|--------o------------|
Sortida: Dins. Distància 2
Entrada: 8 10 5
5             8        10
o------------|--------|
Sortida: Fora. Distància 3

Prova 2

1. Càlcul de nòmines en una empresa

En una empresa, hi ha tres tipus de treballadors: administratius, operaris i directius. Cada tipus de treballador té una tarifa horària diferent: els administratius cobren 12 € per hora, els operaris 15 € per hora i els directius 25 € per hora. A més, els directius reben un bonus fix de 500 € si treballen més de 160 hores mensuals. També es consideren els dies de baixa durant el mes, aplicant una penalització del 10% al sou final si aquests superen els cinc dies.

Dissenya un programa que llegeixi contínuament el tipus de treballador, el nombre d'hores treballades i els dies de baixa, calculi el sou corresponent i indiqui si s'ha aplicat alguna penalització.

El programa finalitzarà quan s'introdueixi un tipus de treballador no vàlid o bé un valor de sortida especificat.

2. Control de passatgers en un aeroport

Un aeroport vol gestionar la informació sobre els passatgers dels seus vols, diferenciant entre passatgers nacionals i internacionals. Es tracta de dissenyar un programa que permeti introduir el codi de cada vol, el nombre de passatgers nacionals i internacionals, i que calculi el total de passatgers del vol i el percentatge de passatgers internacionals. A més, el programa ha de ser capaç de determinar quin vol té el percentatge més alt de passatgers internacionals entre tots els registrats.

El programa s'ha de repetir per diversos vols fins que es detecti un codi de vol de sortida especificat.

3. Seguiment d'atletes en una competició

En una competició d’atletisme, es volen analitzar els resultats de diversos atletes. Cada atleta participa en tres curses i es registra el temps (en segons) de cadascuna. Es necessita un programa que, per a cada atleta, llegeixi el número de dorsal i els temps de les tres curses, calculi la mitjana dels temps i indiqui si ha superat els 10 segons de mitjana o no. A més, el programa ha de mantenir un registre del dorsal de l'atleta amb la millor mitjana i el de l'atleta amb la pitjor mitjana.

La introducció de dades continuarà fins que s'introdueixi un número de dorsal específic per finalitzar.

Exercicis Arrays

1. Realitzar un programa que defineixi un vector anomenat "vector_numeros" de 10 enters, a continuació ho inicialitzi amb valors aleatoris (de l'1 al 10) i posteriorment mostri en pantalla cada element del vector juntament amb el seu quadrat i el seu cub.

2. Crear un vector de 5 elements de cadenes de caràcters, inicialitza el vector amb dades llegides pel teclat. Copia els elements del vector en un altre vector però en ordre invers, i mostra-ho per la pantalla.

Anàlisi

Recorro el vector1 i llegeixo els seus elements per teclat. recorro de forma inversa el vector1 i vaig guardant els elements al vector2 (s'inverteixen).
Recorro el vector2 per mostrar els elements.
Dades d'entrada: 5 cadenes de caràcters
Informació de sortida: Les cinc cadena però mostrar donin ordre invers.
Variables:
vector1,vector2 (vector de 5 cadenes)
tam_vector1,tam_vector2(enter)
indicador1, indicador2 (enter)

3. Es vol realitzar un programa que llegeixi per teclat les 5 notes obtingudes per un alumne (compreses entre 0 i 10). A continuació indiqui la nota mitjana, la nota més alta que ha tret i la menor.

Anàlisi

Llegeixo 5 notes (valido que siguin >=0 i <=10). guardant-les en un vector.
Recorro de nou el vector per acumular les notes, calcular la nota màxima i la nota mínima.
Finalment calculo la mitjana i mostro els valors.
Dades d'entrada: 5 notes
Informació de sortida: Les notes, la nota mitjana, nota màxima i nota mínima.
Variables:
notes (vector de 10 enters)
tam_notes,index(enter)
nota_mitjana (real), suma, nota_max, nota_min (enter)

4. Programa que declari un vector de deu elements enters i demani números per omplir-lo fins que s'ompli el vector o s'introdueixi un número negatiu. Llavors cal imprimir el vector (només els elements introduïts).

Anàlisi

Recorro el vector i vaig inicialitzant els seus elements. Si introdueixo un número negatiu sortim del bucle. També acabo el bucle si introdueixo tots els elements de vector. El número negatiu em serveix d'indicador de fins a quina posició el vector té elements.
Recorro fins a la mida del vector o trobi un número negatiu per mostrar els elements del vector.
Dades d'entrada: Llegeixo nombre positius i els guardo al vector, fins que llegiu un nombre negatiu o llegiu tots els elements del vector.
Informació de sortida: Els elements (números positius) guardats al vector.
Variables:
vector (vector de 10 enters)
tam_vector,indice,num enter)

5.Fer un programa que inicialitzi un vector de números amb valors aleatoris, i posterior ordeneu els elements de menor a major.

Anàlisi

Inicialitzo el vector amb valors aleatoris. Vaig recorrent el vector e intercanvio els valors de dos elements consecutius si no estan ordenats.
Cada vegada que faig un intercanvi ho compatibilitzo, aquest procés ho repeteixo fins que no hagi fet cap canvi, el vector està ordenat.
Dades d'entrada: Res
Informació de sortida: Números del vector ordenat.
Variables:
vector (vector de 10 enters)
tam_vector,index,aux,canvis (enter)

6. Crea un programa que demani un número de mes a l'usuari (per exemple, el 4) i indiqui quants dies té (per exemple, 30) i el nom del mes.

Has de fer servir un vector. Per simplificar-ho suposarem que el febrer té 28 dies.

Anàlisi

Guardo en un vector de 12 posicions els dies corresponents a cada mes.
De la mateixa manera guardo en un altre vector els noms dels mesos
Llegeixo el número d'un mes (Comprovo que sigui entre 1 a 12) i faig coincidir el número del mes amb l'índex dels vectors.
Dades d'entrada: Número del mes
Informació de sortida: Dies i nom del mes.
Variables:
dies (vector de 12 enters)
nom_mes (vector de 12 cadenes),
mes (enter)

7. Programa que declari tres vectors 'vector1', 'vector2' i 'vector3' de cinc enters cadascun, demaneu valors per a 'vector1' i 'vector2' i calculeu vector3=vector1+vector2.

Anàlisi

Omple els elements de dos vectors. Posteriorment els recorro per sumar els valors i desar-lo en un tercer vector.
Dades d'entrada: Números per al primer vector, números per al segon vector
Informació de sortida: Els números del tercer vector, que és la suma dels anteriors
Variables:
vector1,vector2,vector3 (vectors de 5 enters),
índex, tam_vector (enter)

8. Volem desar els noms i les edats dels alumnes de curs.

Feu un programa que introdueixi el nom i l'edat de cada alumne.
El procés de lectura de dades acabarà quan s'introdueixi com a nom un asterisc (*)
En finalitzar es mostrarà les dades següents:
  • Tots els alumnes majors d'edat.
  • Els alumnes més grans (els que tenen més edat)

Anàlisi

Inicialitzo els vectors fins que introduïu un "*" o arribi a final del vector.
El * em serveix per indicar el final del vector.
Faig un recorregut per mostrar els alumnes majors d'edat.
Faig un recorregut (fins a trobar un * o arriba al final) per calcular l'edat màxima. A continuació recorro els arrays, i mostro el nom dels alumnes amb més edat.
Dades d'entrada: Nom i edat dels alumnes fins a ficar *.
Informació de sortida: Els alumnes majors d'edat, i els alumnes més grans
Variables:
edat (vector de 30 enters), nom (vector de 30 cadenes)
index, tam_vector, edat_max (enter)

9. Volem guardar la temperatura mínima i màxima de 5 dies.

Realitza un programa que proporcioni la següent informació:
  • La temperatura mitjana de cada dia
  • Els dies amb menys temperatura
  • Es llegeix una temperatura per teclat i es mostren els dies la temperatura dels quals màxima coincideix amb ella.Si no hi ha cap dia es mostra un missatge informatiu.

Anàlisi

Recorro la taula llegint per a cada dia la temperatura màxima i mínima.
Recorro la taula per mostrar la temperatura mitjana de cada dia.
Recorro la taula, per calcular la temperatura mínima, i torno a recórrer per mostrar els dies amb aquesta temperatura.
Per últim demano una temperatura i recorro la taula per mostrar el dia del qual temperatura màxima és igual a la temperatura indicada, o un missatge dient que no hi ha dia amb aquesta temperatura.
Dades d'entrada: Al cap de cinc dies introduïm temperatura màxima i mínima. I al final introduïm una temperatura per cercar els dies amb temperatura màxima.
Informació de sortida: La temperatura mitjana de cada dia, els dies amb temperatura mínima, els dies amb temperatures màxima la indicada per teclat o un missatge informant que no hi ha dies amb aquesta temperatura màxima.
Variables:
temperatura (taula de 5 x 2 enters)
existeix_temperatura (logico)
índex, cant_dies (enter)
temp_max, temp_min (enter)

10. Dissenyar l'algorisme corresponent a un programa, que:

  • Crea una taula bidimensional de longitud 5x5 i nom 'matriu'.
  • Carrega la taula amb valors numèrics enters.
  • Suma tots els elements de cada fila i tots els elements de cada columna visualitzant els resultats en pantalla.

Anàlisi

Recorro la taula (amb dues per) i vaig llegint els elements de cada fila i columna.
Recorro la taula per files i columnes i vaig acumulant el valor dels elements de cada columna.
Recorro la taula per columnes i files i vaig acumulant el valor dels elements de cada fila.
Dades dentrada: Els elements de la taula.
Informació de sortida: La suma per cada columna, i la suma per cada fila
Variables:
matriu (taula de 5 x 5 enter)
fila, col, num_files, num_cols, suma (enter)

11. Dissenyar l'algorisme corresponent a un programa, que:

  • Crea una taula bidimensional de longitud 5x5 i nom 'diagonal'.
  • Carrega la taula de manera que els components pertanyents a les diagonals de la matriu prenen el valor 1 i la resta el valor 0.
  • Mostra el contingut de la taula en pantalla.

Anàlisi

Recorro la taula: si l'índex de fila = índex de columna (diagonal principal) o índex de fila = nombre de files - 1 - índex de columnes (l'altra diagonal) guardo un 1 sinó guardo un 0.
Recorro la taula per mostrar-la.
Dades d'entrada: Res
Informació de sortida: Els valors de la taula
Variables:
matriu (taula de 5 x 5 enter)
fila, col, num_files, num_cols (enter)

12. Dissenyar l'algorisme corresponent a un programa, que:

  • Crea una taula bidimensional de longitud 5x15 i nom 'marc'.
  • Carrega la taula amb dos únics valors 0 i 1, on el valor un ocuparà les posicions o elements que delimiten la taula, és a dir, les més externes, mentre que la resta dels elements contindran el valor 0.
  • Visualitza el contingut de la matriu a la pantalla.

Anàlisi

Recorro la taula: si l'índex de fila = 0 (extrem esquerre)
o índex de fila = nombre de files -1 (extrem dret)
o índex de columnes = 0 (extrem superior)
o índex de columnes = de columnes columnes -1 (extrem inferior)
inicialitzo a 1, sinó inicialitzo a 0.
Recorro la taula per files i columnes per mostrar els valors.
Dades d'entrada: Res
Informació de sortida: Els valors de la taula
Variables:
matriu (taula de 5 x 5 enter)
fila, col, num_files, num_cols (enter)

13. D'una empresa de transport es vol guardar el nom dels conductors que té, i els quilòmetres que condueixen cada dia de la setmana.

Per desar aquesta informació s'utilitzaran dos array:
  • Nom: Vector per guardar els noms dels conductors.
  • kms: Taula per guardar els quilòmetres que fan cada dia de la setmana.
Es vol generar un nou vector ("total_kms") amb els quilòmetres totals que realitza cada conductor.
En finalitzar es mostra la llista amb els noms de conductors i els quilòmetres ha realitzat.

Anàlisi

Llegeixo el nombre de conductors. Nombre de dades que guardaré als arrays
El nombre indicat ha de ser menor que la màxima mida dels arrays
Recorro els vectors fins al nombre de conductors indicats (ho guardo en un vector), llegint el nom i els kms per dies (ho guardo en una taula).
Recorro la taula acumulant els quilòmetres realitzats a la darrera columna de la taula.
Finalment torno a recórrer per mostrar els noms i els km acumulats.
Dades d'entrada: El nombre de conductors, els noms i els kms realitzats per dia
Informació de sortida: Els noms dels conductors i el total de kms realitzats
Variables:
kms (taula de 10 x 8 enters), nom (vector de 10 cadenes)
index_cond, index_dias, num_conductors, tam_conductors_max (enter)

14. Crear un programa que llegeixi els preus de 5 articles i les quantitats venudes per una empresa a les seves 4 sucursals. Informar:

  • Les quantitats totals de cada article.
  • La quantitat d'articles a la sucursal 2.
  • La quantitat de l'article 3 a la sucursal 1.
  • La recaptació total de cada sucursal.
  • La recaptació total de l'empresa.
  • La sucursal de més recaptació.

Anàlisi

Llegeixo els preus dels articles (ho guardo al vector Preu)
Llegeixo les quantitats venudes dels 5 articles a les 4 sucursals (ho guardo a la taula Quantitat)
Recorro la taula per articles, i mostro el que s'ha venut en total (per article)
Recorro la taula per articles i mostro el que s'ha venut a la sucursal 2.
Mostro el que s'ha venut de l'article 3 a la sucursal 1
Recorro la taula acumulant tot el que s'ha venut i el total per sucursal. A més a més en aquest recorregut calculo la sucursal que ha venut més.
Dades d'entrada: Preu de 5 articles i la quantitat venuda de cada article a 4 sucursals
Informació de sortida: Les que indica l'enunciat
Variables:
Preu (taula de 5 reals), Quantitat (taula de 4 x 3 reals)
Suma, NumMajor, Aricles_Sucursal2, MajorRec, TotalSucursal, TotalEmpresa (real)

15. Crear un programa d'ordinador per gestionar els resultats de la travessa de futbol. Per això utilitzarem dues taules:

  • Equips: Que és una taula de cadenes on guardem a cada columna el nom dels equips de cada partit. A la travessa s'indiquen 15 partits.
  • Resultats: És una taula de nombres enters on s'indica el resultat. També té dues columnes, a la primera es guarda el nombre de gols de l'equip que està guardat a la primera columna de la taula anterior, i a la segona els gols de l'altre equip.
El programa anirà demanant els noms dels equips de cada partit i el resultat del partit, a continuació s'imprimirà la travessa d'aquesta jornada.

Anàlisi

Recorro les taules per inicialitzar el nom dels dos equips i el resultat del partit (gols)
Recorro les taules, mostro el nom dels equips i el resultat de la travessa:
  • Un 1 si el que juga a casa ha guanyat (primer equip guanya)
  • Un 2 si el que juga de visitant ha guanyat (segon equip guanya)
  • Una X si hi ha empat
Dades d'entrada: Nom dels dos equips i el resultat del partit (per a cada partit)
Informació de sortida: Els noms dels equips i el resultat de la travessa
Variables:
equips (taula de 15 x 2 cadenes), resultats (taula de 15 x 2 enters)
index, num_equips (enter)

Exercicis programació estructurada

1. Fes un programa de conversió entre el sistema decimal i el sistema binari. En concret el programa presentarà un menú i utilitzarà dues funcions: una que ens permeti convertir un nombre sencer a binari, i una altra que ens permeti convertir un nombre binari a decimal.

  • ConvertirABinari: Funció que rep un nombre enter i torna una cadena amb la representació del número en binari. Aquesta funció utilitzarà una altlra, EsBinari, que rep un nombre enter i torna cert si un nombre binari i fals en cas contrari.
  • ConvertirADecimal: Funció que rep una cadena amb la representació binària dun nombre i torna el nombre en decimal.

Funcions cadena, emprades en aquest exercici:

  • longitud(cadena): Retorna la quantitat de caràcters de la cadena.
  • subcadena(cadena,pos_ini,pos_fin): Retorna una nova cadena que consisteix a la part de la cadena que va des de la posició pos_ini fins a la posició pos_fin.
  • convertirANumero(cadena): Rep una cadena de caràcters que conté un nombre (caràcters numèrics) i retorna una variable numèrica amb el mateix.
  • convertirATexto(numero): Rep un numero i retorna una variable cadena de caràcters de aquest numero.

2.- El DNI (Document Nacional d'Identitat) a Espanya està format per 8 números i una lletra. La lletra ens serveix per verificar que el número és correcte, per tant la lletra es calcula a partir del número.

Per obtenir la lletra, cal dividir el número per 23 i quedar-te amb la resta. La lletra que correspon segons la resta és:

    0 - T    1 - R    2 - W    3 - A    4 - G    5 - M    6 - Y    7 - F    8 - P    9 - D   10 - X   11 - B
   12 - N   13 - J   14 - Z   15 - S   16 - Q   17 - V   18 - H   19 - L   20 - C   21 - K   22 – E

Fes un programa amb les següents opcions: obtenir lletra DNI, validar DNI i Sortir.

Implementa 4 funcions, amb el següent propòsit:

1. validi a partir de un número de DNI, passat com a cadena, té 9 caràcters numèrics.
2. validi que un DNI, passat com a cadena, té 9 caràcters numèrics i una lletra.
3. a partir de un número de DNI passat com a cadena, ens retorni la lletra que li correspon.
4. a partir de un DNI passat com a cadena, ens indiqui si aquest es correcte.
Les funcions 3 i 4 utilitzaran les funcions 1 i 2, per comprovar que les dades introduïdes són correctes.

Funcions cadena, emprades en aquest exercici:

  • longitud(cadena): Retorna la quantitat de caràcters de la cadena.
  • mayusculas(cadena): Retorna una còpia de la cadena amb tots els seus caràcters en majúscules.
  • subcadena(cadena,pos_ini,pos_fin): Retorna una nova cadena que consisteix a la part de la cadena que va des de la posició pos_ini fins a la posició pos_fin.
  • convertirANumero(cadena): Rep una cadena de caràcters que conté un nombre (caràcters numèrics) i retorna una variable numèrica amb el mateix.


3.- Dissenyar un programa que permeti endevinar a l'ordinador un determinat nombre enter i positiu, utilitzant cerca binaria, per a això s'han de llegir els límits en què està comprès aquest número. El programa haurà d'anar mostrant números que rebran les respostes següents:

‘S’, si és correcte. ‘A’, si és més alt que el número a endevinar. ‘B’, si és més baix.

En finalitzar el programa, cal escriure el nombre d'intents realitzats per encertar el número.



Mas ejercicios


Ejercicio 7

Diseñar un programa que permita adivinar al ordenador un determinado número entero y positivo para lo cual se deben leer los límites en los que está comprendido dicho número. El programa deberá ir mostrando números que recibirán las siguientes respuestas:

‘S’, si es correcto. ‘A’, si es más alto que el número a adivinar. ‘B’, si es más bajo. Al finalizar el programa, se deberá escribir el número de intentos realizados para acertar el número.




Ejercicio 7

Crear una subrutina llamada “Login”, que recibe un nombre de usuario y una contraseña y te devuelve Verdadero si el nombre de usuario es “usuario1” y la contraseña es “asdasd”. Además recibe el número de intentos que se ha intentado hacer login y si no se ha podido hacer login incremente este valor.

Crear un programa principal donde se pida un nombre de usuario y una contraseña y se intente hacer login, solamente tenemos tres oportunidades para intentarlo.

Ejercicio 10

Escribir dos funciones que permitan calcular:

La cantidad de segundos en un tiempo dado en horas, minutos y segundos. La cantidad de horas, minutos y segundos de un tiempo dado en segundos. Escribe un programa principal con un menú donde se pueda elegir la opción de convertir a segundos, convertir a horas,minutos y segundos o salir del programa.


Ejercicio 14

Vamos a crear un programa para trabajar con una pila. Una pila es una estructura de datos que nos permite guardar un conjunto de variables. La característica fundamental es que el último elemento que se añade al conjunto es el primero que se puede sacar.

Para representar una pila vamos a utilizar un arreglo (vector) de cadena de caracteres con tamaño 10, por lo tanto la pila no podrá tener más de 10 elementos.

Vamos a crear varias funciones para trabajar con la pila:

IncializarPila: Como tenemos un arreglo de 10 elementos de cadenas tenemos que inicializarlo e introducir un carácter (por ejemplo un * que indique que ese elemento del arreglo no corresponde con un dato de la pila. Esta función inicializa el vector con ese carácter. LongitudPila: Función que recibe una pila y devuelve el número de elementos que tiene. EstaVaciaPila: Función que recibe una pila y que devuelve si la pila está vacía, no tiene elementos. EstaLlenaPila: Función que recibe una pila y que devuelve si la pila está llena. AddPila: función que recibe una cadena de caracteres y una pila, y añade la cadena a la pila, si no está llena. si esta llena muestra un mensaje de error. SacarDeLaPila: Función que recibe una pila y devuelve el último elemento añadido y lo borra de la pila. Si la pila está vacía muestra un mensaje de error. EscribirPila: Función que recibe una pila y muestra en pantalla los elementos de la pila. Realiza un programa principal que nos permita usar las funciones anterior, que nos muestre un menú, con las siguientes opciones:

Añadir elemento a la pila Sacar elemento de la pila Longitud de la pila Mostrar pila Salir






Más ejercicios

Ejercicio 9

Vamos a programar el juego “Mastermind”, para ello el programa debe “eligir” un número de cuatro cifras (sin cifras repetidas), que será el código que el jugador debe adivinar en la menor cantidad de intentos posibles. Cada intento consiste en una propuesta de un código posible que escribe el jugador, y una respuesta del programa. Las respuestas le darán pistas al jugador para que pueda deducir el código.

Número de “MUERTOS”: Es la cantidad de dígitos que están en el número secreto y en la misma posición, Número de “HERIDOS:” Es la cantidad de dígitos que están en el número secreto pero no en la misma posición. Por ejemplo, si el código que eligió el programa es el 2607, y el jugador propone el 1406, el programa le debe responder un MUERTO (el 0, que está en el código original en el mismo lugar, el tercero), y un HERIDO (el 6, que también está en el código original, pero en la segunda posición, no en el cuarto como fue propuesto).

Ejercicio 10

Escribe un programa para jugar al ahorcado.

Un jugador introduce una palabra secreta y otro jugador tratará de adivinarla. Aparecerá la palabra oculta (se mostrará un conjunto de asteriscos con la longitud de la palabra que hay que adivinar). El programa te va pidiendo letras. Si la letra está en la palabra, se mostrar la palabra mostrando las letras acertadas y los asteriscos en las letras que faltan por averiguar. Cada vez que se introduce una letra se muestra las letras que has introducido anteriormente. Si la letra no se encuentra en la palabra se suma un fallo. Según el número de fallos se mostrará el dibujo del ahorcado cada vez ms completo. Si introduces todas las letras de la palabra has ganada y te mostrará el número de intentos que has necesitado. Si produces 6 fallos, habrás perdido y se mostrará el dibujo del ahorcado completo.