[Encerrar] Resolução de um exercicio

Boas, tenho um exame sexta e agradecia que me ajudassem a resolver os seguintes exercicios de fundamentos de programação sff
é que eu sou um zero nisto xD

1. "
Considere que o ficheiro fexame.txt contem os valores referentes aos elementos de uma matriz de 4 x 4 a que correspondem os seguintes dados, lidos coluna a coluna:

1 2 0 3 0 0 4 0 5 0 6 0 7 8 0 9

Baseando-se no programa abaixo apresentado, modifique-o, de modo a utilizar um vector bidimensional em vez da variavel w e apresenta no ecrã esse vector bidimensional (m~triz), disposto da seguinte forma:

Código:
1 0 5 7 
2 0 0 8 
0 4 6 0 
3 0 0 99
 
#include<stdio.h>
#include<stdlib.h>
int main () 
{
FILE *fe;
int w;
fe = fopen("c:\\fexame.txt", "r");
if(fe == NULL)
{
printf("\n O ficheiro nao existe no caminho especificado.");
exist(1);
}
while( !feof(fe) )
{
fscanf( fe, "%d", &w);
printf("%d\n", w);
}
fclose(fe);
}
"
e o 2º
"
Escreva um programa em linguagem C, com as seguintes caracteristicas:

Peça ao utilizador um numero inteiro pertencente ao intervalo [5, 15].

- Verifique se o numero fornecido pelo utilizador pertence ao intervalo e e' IMPAR.

· Se o numero fornecido nao for impar ou nao pertencer ao intervalo, volta a pedir novo numero.

· Se o numero fornecido pertencer ao intervalo e for impar, desenha no ecra um triangulo isosceles com asteriscos, com um numero de asteriscos na base, igual ao numero fornecido pelo utilizador e na posiçao apresentada no exemplo abaixo.

Exemplo:

Numero inteiro fornecido pelo utilizador 5

Output do programa:
*
**
***
****
*****

(os *'s são centrados)
"
Agradeço desde já a ajuda pessoal.



;)
 
Última edição:
Pois, esqueci-me
no primeiro é geral, no segundo é fazer aparecer os *'s, fazes-mos a verificação com um do while, geramos os *´s com o for e depois vem a minha duvida, fazer aparecer os *'s com se com um printf, ou um puts char e como :S
 
Bem quanto ao é primeiro acho k é obvio onde vao surgir as principais modificações!

Obviamente dentro do while (claro k vais ter d transformar w num array bidimensional d ints)!

dps é acrescentar um contador dentro do while e um "for" com passo quatro e axo que tens o problema resolvido!

No segundo eu resolveria com um do...while para fzr a verificação e dps com um "for" dentro d um while para imprimir o triangulo.

dentro d "for" um printf(*); e dps do "for"" mas ainda dentro do while um printf(\n);
Claro que tens d meter contadores e criar outra variavel!

(Eu sei k n fui muito especifico, mas quero ver se chegas lá sozinho!) ;)
 
Peça ao utilizador um numero inteiro pertencente ao intervalo [5, 15].

- Verifique se o numero fornecido pelo utilizador pertence ao intervalo e e' IMPAR.

· Se o numero fornecido nao for impar ou nao pertencer ao intervalo, volta a pedir novo numero.

· Se o numero fornecido pertencer ao intervalo e for impar, desenha no ecra um triangulo isosceles com asteriscos, com um numero de asteriscos na base, igual ao numero fornecido pelo utilizador e na posiçao apresentada no exemplo abaixo.
Isso é mais ou menos simples!


pedir numero;
verificar numero[5.15] - (if num >= 5 and num <= 15) ou outro qql, tipo um while.
se for verdade verifica se e' impar( penso que em c e' a %)
Código:
CODE
int x = 5;

if x % == 0
{
    cout<< "Novo número";
else
   cout << "Número Imapar";
}
Por ultimo crias uma variavel 'z' qe comece a 1 e que seja comparada com o numero introduzido pelo utilizador. faz um ciclo para que:

Código:
Enquanto z<=numero{
enquanto z<estrela; {escrever "*";}
escrever "/n";(quebra de linha)
}
Penso que seja basicamente isso.
 
Última edição:
Código:
  [COLOR=blue][FONT=&quot]#include[/FONT][/COLOR][FONT=&quot] [COLOR=#a31515]<stdio.h>[/COLOR][/FONT]
  
  [COLOR=blue][FONT=&quot]void[/FONT][/COLOR][FONT=&quot] main()[/FONT]
  [FONT=&quot]{[/FONT]
  
  [COLOR=blue][FONT=&quot]int[/FONT][/COLOR][FONT=&quot] a ;[/FONT]
  [COLOR=blue][FONT=&quot]char[/FONT][/COLOR][FONT=&quot] op, i;[/FONT]
  [COLOR=blue][FONT=&quot]do[/FONT][/COLOR][FONT=&quot]{[/FONT]
  [COLOR=blue][FONT=&quot]do[/FONT][/COLOR][FONT=&quot]{[/FONT]
  
  [FONT=&quot]printf ([COLOR=#a31515]"insira um valor entre 5 e 15\n\n"[/COLOR]);[/FONT]
  [FONT=&quot]scanf([COLOR=#a31515]"%d"[/COLOR], &a);[/FONT]
  [COLOR=green][FONT=&quot]//printf( " a=%d\n\n", a);[/FONT][/COLOR]
  
  [FONT=&quot]}[COLOR=blue]while[/COLOR](((a>5)||(a<15))&&(a%2==0));[/FONT]
  
  [COLOR=blue][FONT=&quot]for[/FONT][/COLOR][FONT=&quot] ( i=1 ; i <=a ; i++)  {[/FONT]
  
  [FONT=&quot]    //putchar ();[/FONT]
  [FONT=&quot]    }[/FONT]
  
  
  
  [FONT=&quot]printf([COLOR=#a31515]"\ndeseja sair? (s/n)\n\n"[/COLOR]);[/FONT]
  [FONT=&quot]scanf([COLOR=#a31515]" %c"[/COLOR], &op);[/FONT]
  
  [FONT=&quot]}[COLOR=blue]while[/COLOR](op==[COLOR=#a31515]'n'[/COLOR]);[/FONT]
  
  [FONT=&quot]}[/FONT]
, este que é o segundo. O meu unico problema é meter a escrever os *'s, tenho impressao q é com putchar, porem não consigo :S

para o 1º tenho entao tenho de definir uma matriz[j] , e fazer dois for's ??
 
Para verificares se o numero está entre 5 e 15 nao podes meter um "||" mas sim um "&&"

Código:
while( n<=a){
   for ( i=1 ; i <=n ; i++) {
        printf("*") ;
   }
   printf("/n");
   n++;
 
}

Acho que isto resolve o teu problema!
Não te esqueças de inicializar o n a 1 ou 0!
 
Última edição:
Para verificares se o numero está entre 5 e 15 nao podes meter um "||" mas sim um "&&"

Código:
while( n<=a){
   for ( i=1 ; i <=n ; i++) {
        printf("*") ;
   }
   printf("/n");
   n++;
 
}
Acho que isto resolve o teu problema!
Não te esqueças de inicializar o n a 1 ou 0!


Obrigado, já ta a funcionar bacano. Só mais uma coisa, para meter o *'s centrados, para ficar em piramide como de faz, ja tentei "\t" e nao me resultou em nada:s
 
Se voce colocar o /t vai e' criar uma tabulaçao e ficar algo assim(penso eu)

----*
----**
----***

( ---- = /t )
nunca tentei fazer isso centrado.
não sei se me fiz entender
 
Não sei se da mais tenta fazer algo assim.

uma variavel centrar igual ao numero.
depois divide essa variavel por dois e subtrai a ela uma variavel q=1 que vai ser incrementada de um a um para diminuir o espaço da proxima linha.


Código:
centrar = num;
centrar = (centrar / 2);
for (centrar-q; centrar <=0;q++){
printf(" ");}

inventei isso aqui agora, tenta incrementar isso ao teu codigo. :p
Boa Sorte!
 
Código:
n=0;
while( n<=a){
 
    for ( i=1 ; i <=n ; i++) {
         for (centrar-q; centrar <=0;q++){
             printf(" ");
         }
   printf("*") ;
   }
   printf("\t\n");
   n++;
 
}

Tenta assim.
fica antes de escrever a estrela para por o espaço antes da estrela.
Nao sei se isso funciona
 
N percebo o que queres dizer com deixar centrado :s

Quanto ao primeiro!
Código:
i=0;
while( !feof(fe) )
{
 
for(j=0;j<4;j++){
  fscanf( fe, "%d", w[i][j]);
  printf("%d\n", w);
  }
i++;
}

Sei que já foi tarde mas não pude responder antes! :s
 
Última edição:
Back
Topo