Orar semigroup #2
Archive for noiembrie 2013
Laborator 6 - Test (6 noiembrie)
miercuri, 6 noiembrie 2013
by DlMuresan
Categories:
C,
Laborator,
test
|
Leave a comment
Laborator 5 - Probleme recursivitate (30 octombrie)
3.4.Să se scrie un program recursiv care citeşte n cuvinte şi le afişează în ordinea inversă a introducerii lor.
#include <stdio.h>3.5.Să se scrie un program recursiv de generare a produsului cartezian a n mulţimi.
#include <stdlib.h>
void citire_afisare(int n)
{
int i;
char a[10];
if(n>=1)
{
scanf("%s",&a);
citire_afisare(n-1);
}
if(n)
printf("%s\n",a);
}
int main()
{
int n;
printf("Cititi numarul de cuvinte: ");
scanf("%d",&n);
citire_afisare(n);
getch();
}
#include<stdio.h> // CU ŞIRURI DE CARACTERE
int n,nr=0;
char a[10][10],x[10];
void backt(int i)
{
int j;
for(j=0;j<strlen(a[i]);j++)
{
x[i]=a[i][j];
if(i==n)
{
printf("%s \n",x+1);
nr++;
}
else
backt(i+1);
}
}
int main()
{
int i;
scanf("%d",&n);
for(i=0;i<=n;i++)
{
gets(a[i]);
}
x[n+1]='\0';
backt(1);
printf("%d solutii",nr);
getch();
return 0;
}
3.6.Să se scrie un program de generare recursivă a submulţimilor de k elemente ale mulţimii A cu n elemente (combinaţiile de n elemente luate câte k).
3.7. Să se scrie un program de rezolvare a problemei celor 8 regine (determinarea tuturor aşezărilor pe tabla de şah a celor 8 regine astfel încât să nu se atace).
3.8.Să se genereze recursiv permutările mulţimii A de n elemente.
3.9.Se consideră o bară de lungime m şi n repere de lungimi l1, l2, .... , ln. Din bară trebuie tăiate bucăţi de lungimea reperelor date, astfel încât să rezulte din fiecare reper cel puţin o bucată şi pierderile să fie minime.
3.10. Funcţia lui Ackermann. Să se scrie programul recursiv care calculează funcţia lui Ackermann definită astfel:
Ack(0,n)=n+1 pentru n ε N
Ack(m,0)=Ack(m-1,1) pentru m ε N*
Ack(m,n)=Ack(m-1,Ack(m,n-1)) pentru m,n ε N
marți, 5 noiembrie 2013
by DlMuresan
Categories:
8 regine,
ackerman,
combinari,
eficientizare,
functii,
Laborator,
PC,
permutari,
produs cartezian,
recursivitate,
submultimi,
subprograme
|
Leave a comment
Temă curs PC (6 noiembrie)
Se citeste într-un şir de caractere un număr hexazecimal, iar mai apoi un număr roman. Care e valoarea în zecimal?
#include <stdio.h> // Problema tema Ignat 6.11.13
#include <stdlib.h> // Se citeste intr-un sir de caractere un număr hexazecimal, iar mai apoi un număr roman. Care e valoarea în zecimal?
void roman_arab(char a[100]) // M D C L X V I
{
int n=0,i,j;
for(i=0;i<strlen(a);i++)
{
if(a[i]=='C' && a[i+1]=='M')
{
strcpy(a+i,a+i+2);
i--;
n=n+900;
}
if(a[i]=='C' && a[i+1]=='D')
{
strcpy(a+i,a+i+2);
i--;
n=n+400;
}
if(a[i]=='X' && a[i+1]=='C')
{
strcpy(a+i,a+i+2);
i--;
n=n+90;
}
if(a[i]=='X' && a[i+1]=='L')
{
strcpy(a+i,a+i+2);
i--;
n=n+40;
}
if(a[i]=='I' && a[i+1]=='X')
{
strcpy(a+i,a+i+2);
i--;
n=n+9;
}
if(a[i]=='I' && a[i+1]=='V')
{
strcpy(a+i,a+i+2);
i--;
n=n+4;
}
}
for(i=0;i<strlen(a);i++)
{
switch(a[i])
{
case 'M':n=n+1000;break;
case 'D':n=n+500;break;
case 'C':n=n+100;break;
case 'L':n=n+50;break;
case 'X':n=n+10;break;
case 'V':n=n+5;break;
case 'I':n=n+1;break;
}
}
printf("%d",n);
}
int pow(int n,int p)
{
if(p==0)
return 1;
int i,k=1;
for(i=1;i<=p;i++)
k=k*n;
return k;
}
void hexazecimal_zecimal(char a[100])
{
int n=0,nr,i,j,val;
nr=strlen(a);
for(i=0;i<nr;i++)
{
switch(a[i])
{
case 'A':val=10;break;
case 'B':val=11;break;
case 'C':val=12;break;
case 'D':val=13;break;
case 'E':val=14;break;
case 'F':val=15;break;
default :val=(int)a[i];break;
}
n=n+val*pow(16,nr-i-1);
}
printf("%d",n);
}
int main()
{
char a[100];
printf("Cititi un numar hexazecimal sau un numar roman\n");
gets(a);
int ok;
printf("Ati citit un numar hexazecimal (1) sau un numar roman (0)?\n");
scanf("%d",&ok);
printf("Numarul in zecimal este\n");
if (ok==1)
{
hexazecimal_zecimal(a);
}
else
{
roman_arab(a);
}
getch();
}
by DlMuresan
Categories:
C,
conversie,
hexazecimal,
ignat,
nr romane,
PC,
roman,
tema,
zecimal
|
Leave a comment