Pagini recente » Cod sursa (job #966603) | Cod sursa (job #3134670) | Cod sursa (job #1119213) | Cod sursa (job #698585) | Cod sursa (job #630830)
Cod sursa(job #630830)
#include <stdio.h>
//#include <conio.h>
#include <stdlib.h>
int sir_maxim = 0;
int vector_maxim[ 10000] = { 0};
void citire( int **sir, int *n){
int *vector, i;
FILE *f = fopen( "scmax.in", "rt");
if( !f){
printf( "\nFisierul nu poate fi deschis!!!");
exit( 0);
}
vector = new int[ 10000];
for( i = 0; i < 10000; i++)
vector[ i] = 0;
i = fscanf( f, "%i", n);
*n = *n + 2;
if( i != 0)
for( i = 0; i < *n; i++)
fscanf( f, "%i", &vector[ i]);
fclose( f);
*sir = vector;
return;
}
void scriere( int *sir, int n){
int i;
printf( "\nNumerele sunt:\n");
for( i = 0; i < n - 1; i++)
printf( " %i", sir[ i]);
}
void tiparire( int *sir, int k){
int i;
//for( i = 0; i < k; i++){
// printf( " %i", sir[ i]);
//}
if( sir_maxim < k){
sir_maxim = k;
for( i = 0; i < k; i++){
vector_maxim[ i] = sir[ i];
}
}
return;
}
int verificare( int *viz, int k)
{
if(k==0)
return 1;
if( viz[ k - 1] >= viz[ k])
return 0;
return 1;
}
void cm_lung_subsir( int k, int *sir_initial, int n, int **viz, int prec){
int i;
int *vector = *viz;
for( i = prec; i < n - 1; i++){
*viz = vector;//merge si-aici
vector[ k] = sir_initial[ i];
if( verificare( *viz, k)){
//printf( "\n");
tiparire( *viz, k + 1);
cm_lung_subsir( k + 1, sir_initial, n, viz, i);
}
}
return;
}
int main(){
int i, *sir_initial, n, k = 0;
int *viz;
int *final;
viz = (int *)calloc( n, sizeof( int));
if( viz == NULL) exit( 1);
final = (int *)calloc( n, sizeof( int));
if(!final)
return -1;
citire( &sir_initial, &n);
//scriere( sir_initial, n);
cm_lung_subsir( 0, sir_initial, n, &viz, 0);
//printf( "\nSirul maxim este:\n");
FILE *kf = fopen( "scmax.out", "wt");
//printf( "po:%i", po);
for( i = 0; i < sir_maxim; i++)
//printf( " %i", vector_maxim[ i]);
fprintf( kf, "%i ", final[ i]);
fclose( kf);
return 0;
}