//Exercicio com funcoes e bibliotecas
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "funcoes.h"
int main(){
int i, input=5;
char strIn[1000]="Teste de cifra";
//system("clear");
printf("Informe um numero inteiro: ");
scanf("%d",&input);
//printf("\nO numero %d e par: %d", input, par(input));
//printf("\nO numero %d e primo: %d", input, primo(input));
//if(input > 1900) printf("\nO ano %d e bissexto: %d", input, bissexto(input));
//printf("\nA sequencia fibonacci do numero %d e: \n", input);
//fibonacci(input);
printf("\nA cifra de cesar e: ");
cifra_cesar(strIn);
printf("\nA soma dos %d primeiros numeros naturais pares e: %d\n",input,soma_naturais(input,'p'));
printf("\nA soma dos %d primeiros numeros naturais impares e: %d\n",input,soma_naturais(input,'i'));
int r=5,h=8;
printf("\nVolume e a area da superficie de um cilindro de raio %d e altura %d",r,h);
calc_cilindro(r,h);
int b=0;
printf("\nSwap input");
swap(&input,&b);
printf("\nPrint var input: %d, e var b %d", input, b);
printf("\nGravar string em arquivo ... ");
save(strIn, "saida.out", 'a');
sprintf(strIn,"%d",b);
save(strIn, "saida.out", 'a');
printf("\n\nLendo arquivo ... \n");
load("saida.out");
int n, j, _i, _j, range = 100;
i = 0;
srand(time(NULL));
printf("Informe o tamanho da matriz NxN: ");
scanf("%d",&n);
int array[n][n];
for(i = 0; i <= n; i++){
for(j = 0; j <= n; j++){
array[i][j] = (rand() % range)+1.0;
}
}
ler_array(n,n,array);
printf("Qual linha deve somar: ");
scanf("%d",&_i);
produto_linha(n,n,array,_i-1);
printf("Qual coluna deve somar: ");
scanf("%d",&_j);
produto_coluna(n,n,array,_j-1);
printf("\n\n");
int m;
printf("Informe o tamanho das duas matrizes MxM para a soma de matrizes: ");
scanf("%d",&m);
int array1[m][m];
int array2[m][m];
for(i = 0; i <= m; i++){
for(j = 0; j <= m; j++){
array1[i][j] = (rand() % range)+1.0;
}
}
for(i = 0; i <= m; i++){
for(j = 0; j <= m; j++){
array2[i][j] = (rand() % range)+1.0;
}
}
printf("Array 1: ");
ler_array(m,m,array1);
printf("Array 2: ");
ler_array(m,m,array2);
printf("\n\n");
printf("Arrays somadas: ");
soma_matriz(m,m,array1,array2);
ler_array(m,m,array1);
printf("\n\n");
}
int par(int n);
int primo(int n);
void fibonacci(int n);
int bisexto(int n);
void cifra_cesar(char str[1000]);
void swap(int *a, int *b);
void save(char str[1000], char fileName[256], char t);
void load(char fileName[256]);
int soma_naturais(int n, char t); // (n primeiros numeros; p-> 2 para par; 1 para impar)
void calc_cilindro(float r, float h); //calcula o volume e a área da superficie de um cilindro de raio r e altura h
void produto_linha(int linha, int coluna, int array[linha][coluna], int index);
void produto_coluna(int linha, int coluna, int array[linha][coluna], int index);
void ler_array(int linha, int coluna, int array[linha][coluna]);
void soma_matriz(int linha, int coluna, int array1[linha][coluna], int array2[linha][coluna]);
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int par(int n){
if(!(n%2)) return(1);
else return(0);
}
int primo(int n){
int i, cont=0;
for (i = 1; i<=n; i++){
if (!(n%i)) cont++;
}
if(cont==2) return(1);
else return(0);
}
int bissexto(int n){
if (!(n%4)) return(1);
else return(0);
}
void fibonacci(int n){
int k;
double i=1, j=0, tmp=0;
for(k=1; k<=n; k++){
tmp = i + j;
i = j;
j = tmp;
printf("%.0lf, ",j);
}
}
void swap(int *a, int *b){
int temp;
temp=*a;
*a=*b;
*b=temp;
}
// WRITING OUTPUT
void save(char str[1000], char fileName[256], char t){
FILE *f = NULL;
char c;
int i;
if(((t != 'w') && (t !='a') && (t !='b'))) {
printf("\nTipo [%c] para ler arquivo incorreto!\n",t);
exit(1);
}
strcat(str, "\n"); /* add a newline */
// sprintf(fileName,"%s.out","saida");
f = fopen(fileName,&t);
//fprintf(f,"%d, %d\n",input,b);
for(i=0; str[i]; i++) fprintf(f,"%c",str[i]);
fclose(f);
printf(" [save...OK!]\n");
}
void load(char fileName[256]){
FILE *f = NULL;
char c;
f = fopen(fileName, "r");
if (f) {
while ((c = fgetc(f)) != EOF)
printf("%c",c);
fclose(f);
}
printf("\n[Load ... OK!]\n");
}
char cifra_cesar(char str[1000]){
//65 - 90 A,B, ...
//97 - 122 a,b, ...
int i,j=0;
char str2[1000];
for(i=0; str[i]; i++){
if((str[i] >= 65)&&(str[i] < 90)) str2[j] = str[i]+1;
else if((str[i] == 90)||(str[i] == 122)) str2[j] = str[i]-25;
else if((str[i] >=97 )&&(str[i] < 122)) str2[j] = str[i]+1;
else str2[j] = str[i];
j++;
}
printf("%s", str2);
save(str2, "saida.out", 'w');
}
int soma_naturais(int n, char t){
int i,soma=0;
switch(t){
case 'p':
for(i=0;i<=n;i++) if(!(i%2)) soma+=i;
break;
case 'i':
for(i=0;i<=n;i++) if((i%2)) soma+=i;
break;
default:
printf("\nParametro t invalido\n");
exit(1);
}
return soma;
}
void calc_cilindro(float r, float h){
float PI = 3.14159265;
printf("\n Volume: %.2f",PI*pow(r,2)*h);
printf("\n Area: %.2f\n",2*PI*r*h + 2*PI*pow(r,2));
}
void ler_array(int linha, int coluna, int array[linha][coluna]){
int i,j;
printf("\n");
for(i=0;i<linha;i++){
for(j=0;j<coluna;j++){
printf("a[%d][%d]: %d ",i+1,j+1,array[i][j]);
}
printf("\n");
}
}
void produto_coluna(int linha, int coluna, int array[linha][coluna], int index){
int i,soma=0;
for(i=0;i<linha;i++){
soma += array[i][index];
}
printf("Soma da coluna %d: %d\n",index+1,soma);
}
void produto_linha(int linha, int coluna, int array[linha][coluna], int index){
int j,soma=0;
for(j=0;j<coluna;j++){
soma += array[index][j];
}
printf("Soma da linha %d: %d\n",index+1,soma);
}
void soma_matriz(int linha, int coluna, int array1[linha][coluna], int array2[linha][coluna]){
int i,j;
printf("\n");
for(i=0;i<linha;i++){
for(j=0;j<coluna;j++){
array1[i][j] = array1[i][j] + array2[i][j];
}
}
}