Jump to content

[Ajutor] Probleme scheme logice si mathlab


Ionut1598
 Share

Recommended Posts

@Ionut1598,

 

Nu știu ce-i Mathlab, dar îți las rezolvarea pentru a 2-a problemă mai jos, poți lejer s-o traduci în ce vrei tu:

Legat de prima problemă, n-ai un exemplu de cod să-mi dai? Presupun că va fi un număr de 13 cifre, fiecare cifră separată printr-o liniuță, nu? Dacă te descurci să o traduci din C++, ți-o pot face și pe aceasta

#include <iostream>
#include <algorithm>
// #include <stdio.h>

void bubbleSort(float Perimetre[], int Elemente)
{
	for(int i=0; i<Elemente; i++)
		for(int j=i; j<Elemente; j++)
			if (Perimetre[i] > Perimetre[j])
			{
				float aux = Perimetre[i];
				Perimetre[i] = Perimetre[j];
				Perimetre[j] = aux;
			}
}

int main()
{
	/*
		Se citesc de la tastatura diametrele a N cercuri
		Deci noi trebuie sa citim prima data acel N numar
	*/
	int N;
	std::cin >> N;


	/*
		Vrem sa citim cele N diametre
		Stim ca diametrul unui cerc este egal cu 2r
		Deci d = 2r => r = d/2
	*/
	float Perimetre[50]; // Consideram ca N va fi mai mic decat 51, aici stocam cele N perimetre ce ni le cere problema
	float Diametru, Raza, pi = 3.14;
	for (int i = 0; i < N; i++)
	{
		// Aflam raza cercului
		std::cin >> Diametru;
		Raza = Diametru / 2;

		/*
			Calculam:
				Aria Cercului: pi * r^2
				Perimetrul Cercului: 2 * pi * r
			si le afisam in ordinea aceasta
		*/
		std::cout << i + 1 << ". " << pi * (Raza * Raza) << " " << 2 * pi * Raza << std::endl;
		/*
			Alternativa pentru afisare folosind libraria stdio.h
			printf("%d. %0.2f %0.2f", i + 1, pi * (Raza * Raza), 2 * pi * Raza);
		*/
		Perimetre[i] = 2 * pi * Raza;
	}

	/*
		Acum ordonam vectorul cu perimetrele in ordine crescatoare
		Aici avem mai multe alternative
		Ori folosim functia sort din libraria algorithm, ori ne facem noi propriul algoritm de sortare
	*/
	std::sort(Perimetre, Perimetre + N); // Metoda 1
	bubbleSort(Perimetre, N); // Metoda 2

	// Afisam perimetrele
	for (int i = 0; i < N; i++)
		std::cout << Perimetre[i] << " ";
}

 

Link to comment
Share on other sites

Aici un exemplu de cod pentru prima problema:

% Script extragere campuri din CNP
%% initializare
clear all
n = 1;

obs='';
raspuns = 'D';
cnp = 0;
%% citire date
while strcmpi(raspuns, 'D')
 while cnp <= 10^12 % similar 1e12
 cnp = input(['Introduceti codul numeric personal al persoanei ',...
 num2str(n), ': ']);
 end
 cnp=num2str(cnp);
 s = cnp(1);
 switch s
 case '1'
 sex = 'masculin';
 secol = 20;
 case '2'
 sex = 'feminin';
 secol = 20;
 case '3'
 sex = 'masculin';
 secol = 19;
 case '4'
 sex = 'feminin';
 secol = 19;
 case '5'
 sex = 'masculin';
 secol = 21;
 case '6'
 sex = 'feminin';
 secol = 21;
 case '7'
 sex = 'masculin';
 secol = 20;
 obs = 'Persoana straina rezidenta in Romania';
 case '8'
 sex = 'feminin';
 secol = 20;
 obs = 'Persoana straina rezidenta in Romania';
 case '9'
 sex = 'necunoscut';
 secol = 20;
 obs = 'Persoana straina';
 end
 aa = cnp(2:3);
 if secol == 20
 an = str2num(['19',aa]);
 elseif secol == 21
 an = str2num(['20',aa]);
 else
 an = str2num(['18',aa]);
 end
 jj = str2num(cnp(8:9));
 if jj == 12
 jud = 'Cluj';
 elseif jj >= 40 && jj <= 46
 jud = 'Bucuresti';
 else
 jud = 'Judet necunoscut';
 end
 %% creare structura
 pers(n).cnp = cnp;
 pers(n).s = sex;
 pers(n).an = an;
 pers(n).luna = str2num(cnp(4:5));
 pers(n).zi = str2num(cnp(6:7));
 pers(n).jud = jud;
 pers(n).obs = obs; 
 raspuns = input('Continuati ? (D/N): ','s');

n = n+1;
end
%% afisare
for index = 1:n-1
 disp(['Persoana ',num2str(index)]);
 disp(pers(index));
end

 

 

 

Edited by Ionut1598
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.