program za pali,gasi svetlo :)?

Fidelito_Castro

Obećava
Poruka
62
Ljudi molim vas za pomoc,znaci odradio sam program koji pali i gasi svetlo e sad treba mi pomoc da se to izvrsava konstanto
odnosno da stalno mogu da pritiskam 1 za paljenje i 0 za gasenje.


Kod:
/*Paljenje i gasenje svetla.Program treba da sadrzi 3 stanja
upaljeno svetlo,ugaseno svetlo i nelogican unos */
#include<stdio.h>

void main(){
    
    char upaljeno,ugaseno;
    
    
    printf("Svetlo je ugaseno\nDa li zelite da upalite svetlo<1>\n");
    scanf("%c",&upaljeno);
    fflush(stdin);

    printf("Svetlo je ugaseno\n",);
    scanf("%c",&ugaseno);

    switch(upaljeno){
    case '1':{
        printf("Svetlo se upalilo\n"); break;
           }
    case '0':{
        printf("Svetlo je ugaseno\n"); break;
           }
    }
    switch(ugaseno){
    case'1':{
        printf("Svetlo je upaljeno?"); break;
            }
    case'0':{
        printf("Svetlo je ugaseno?"); break;
            }
    }
        
}
 
Uspeo sam nekako da napisem program koji pali i gasi svetlo.
E sad,treba mi da ogranicim da ako se unose slova da ispisuje nesto na ekranu!

Kod:
/*Sijalica*/

#include<stdio.h>
#include<stdlib.h>
#define UPALJENO 1
#define UGASENO 0
#define NE 15

int main()
{
	int stanje;
	char ne[NE];
	
	//ispitivanje stanja prekidaca
	opet: printf("Stanje svetla:");
	scanf("%d",&stanje);
	//uslovna promena stanja prekidaca

	if(stanje==UPALJENO)
	{								 
		printf("Sijalica je upaljena -0-\n"); goto opet;
	
	}
	else if(stanje==UGASENO)
	{
		printf("Sijalica je ugasena -X-\n"); goto opet;
	}
	else if((stanje=!UPALJENO)||(stanje=!UGASENO))
	{
		printf("Pregorecu!!!\n\a"); goto opet;
	}
	else(stanje==ne);
	{
		printf("Alo!!!");
	}
	return EXIT_SUCCESS;
}
 
Имаш ту неких нелогичности. На пример:
else if((stanje=!UPALJENO)||(stanje=!UGASENO))
хтео си написати "!=" уместо "=!" јел да?

Ако си "не" дефинисао као стринг( односно низ знакова) онда од корисника треба да учитаваш низ знакова, па треба да напишеш scanf("%s", ne);

На даље ћеш морати да врших поређење стрингова, не бројева па ће ти се и даљи код у задатку мало мењати. У С језику не можеш директно да поредиш два стринга али ако ти је потребно да их поредиш( или вршиш неку другу операцију над њима) најлакше је да користиш функције које су дефинисане у хеадеру string.h

Које су то функције можеш лако да нађеш на гуглу.

Још да додам, немој користити goto наредбу кад си год у могућности. Уместо ње, користи петље!
 
Hvala ljudi na pomoci!:) Poslusao sam vas i odradio kod sa petljom while

nego sad me interesuje sam jedan deo koda?
Napisacu ceo kod a posle cu izvuci deo koji mi nije u potpunosti jasan.

Kod:
//Prekidac za svetlo

/*Upaljeno=1
* Ugaseno=0
* ESC=izlaz   */

#include <stdio.h>

int main(void)
{
   int  prekidac;//deklaracija prekidaca
   
   printf("Legenda:\n|1=ON|\n|0=OFF|\n|ESC=EXIT|\n");//prikazivanje legende

   while ( prekidac != 0x1B )//ispitivanje uslova za prekidac
   {
      prekidac = getch();//uzimanje karaktera sa tastature
      switch ( prekidac )//skretnica za prekidac
          {
            case '0': printf( "Ugaseno-x-.\n" ); break;//izlaz iz granjanja
            case '1': printf( "Upaljeno-0-.\n" ); break;//izlaz iz granjanja
            default:  printf( "Greska!!!\n" ); break;//izlaz iz granjanja
          }
      
   }
  
}

E sad interesuje me ovaj deo
Kod:
while ( prekidac != 0x1B )
.Nasao sam na netu da je escape=1B predstavljeno u heksadecimalnom brojevnom sistemu,ali zasto ide 0x1B.Moze li da ide samo
Kod:
while(prekidac != 1B )
.
Bio bih zahvalan ako neko moze da mi pojasni.
 

Back
Top