Projekt: Počítačka (jednoduchý kalkulátor)

Ahoj, chtěl bych udělat takový jednoduchý kalkulátor, ale něco se mi tam kazí. Nevěděl by někdo, co tam je blbě?
#include <avr/io.h>
#include <stdlib.h>
#include “lcd.h”
#include <stdio.h>
#define B1() (bit_is_clear(PIND,7))
#define B2() (bit_is_clear(PIND,6))
const unsigned char i]={0b00101011,0b00101101,0b00101010,0b00101111,};

int main(){

char text[32]; //pole znakov pre vypis na displej  

DDRD = 0x00;
int x = 0;
int y = 0;
int m;
int p;
int z;
m = (i[p]);
if(B1())
{

        x++;
       
    }
    if(B2())
    {
        
        y++;
        }

switch(m)

{
case 0:
x+y=z;
break;

case 1:
x-y=z;
break;

case 2:
x*y=z;
break;

case 3:
x/y=z;
break;

}

lcd_init(LCD_DISP_ON); // inicializacia displeja  
  
sprintf(text,"%d %d %d",x,m,y);  

lcd_puts(text); // vypis znaky na displej  

return 0;

}

:arrow_right: administrator: přejmenováno z "počítačka"

Nějak jsem nepochopil co je pole i], ale nevypadá to být v pořádku:

  • index p není inicializovaný na výchozí hodnotu a přesto se používá jako index do pole i].
  • hodnoty z pole i] neodpovídají hodnotám ve switch(m)
  • program po zapnutí proběhne jednou funkcí main() a ukončí se, takže to asi nic moc dělat nebude

pole i jsou znaménka pro lcd displej(+,-,,/), myslel jsem, že při stisku tlačítka č.1 budu nastavovat hodnotu 1. čísla(x) a tlačítkem č.2 budu nastavovat hodnotu 2.čísla(y) a tlačítkem číslo 3 bych měnil požadovanou početní operaci(+,-,,/). To pole by mělo čistě sloužit pro vypsání znaků na lcd displeji-jsou to hodnoty z tabulky

když jsem tam dal reakci na stisk tlačítka tak to nešlo vůbec…

x+y=z;

Toto je dovoleno v algebře, ale ne v programování.

Na levé straně přiřazení musí být výraz, který má jednoznačnou adresu.
Překladač tady musel hlásit chybu.