Stránka 1 z 1

Program v C - znaky

Napsal: pon 19. říj 2009, 13:21
od dark_stuff
Může mi někdo poradit, v čem dělám chybu? (Krom toho, že využívám zbytečně zdlouhavé if :-D)

Kód: Vybrat vše

#include <stdio.h>
#include <stdlib.h>

main()
{ char x;
  char maxv;
  printf("\nProgram pro zjisteni znaku");
  printf("\nZadejte nejaky znak: ");
  scanf("%d", &x);
  maxv='Z';
  if (x='!')
	  printf("\nZnak je vykricnik");
  else 
  {
	if (x='@')
	  printf("\nZnak je zavinac");
	else 
	{
		if (x='?')
		printf("\nZnak je otaznik");
		else 
		{
			if (x='#')
			printf("\nZnak je krizek");
			else 
			{
			if (x='^')
			printf("\nZnak je striska");
			else 
			{
					if (x<=maxv)
					printf("\nZnak je velke pismeno %c", x);
					else 
					{
						if (x>maxv)
						printf("\nZnak je male pismeno %c", x);
						else 
						{
							if (x>=0)
							printf("\nZnak je cislo %c", x);
							else 
							{
							printf("\nZnak je neznamy znak");
						}
					}
				}
			}
			}
		}
	}
  }
							
system("pause");
  
}

Zadání: Napište v jazyku C program, který pro zadaný znak slovy vypíše, o jaký znak se jedná...

Pro malá písmena vypíše program text "male pismeno " a daný znak, pro velká písmena vypíše text "velke pismeno " a daný znak, pro číslice vypíše "cislice " a daný znak. Dále pro znaky "!", "?", "*", "@", "#", "^" vypíše odpovídající text: "vykricnik", "otaznik", "hvezdicka", "zavinac", "krizek", "striska". Pokud se jedná o jiný než výše uvedený znak, vypíše program text "jiny znak".

Re: Program v C - znaky

Napsal: pon 19. říj 2009, 13:47
od Maranov
Nechápeš rozdíl mezi = a ==. Mrkni se do příručky na rozdíl a hned pochopíš kde je chyba. ;-)

A používej else if, nebo tady ještě lépe switch.

A maxv je proměnná proč? To by spíš měla být konstanta, ne? (nezapisuješ do ní nikdy, má pořád inicializační hodnotu.)

A piš slušně, dávej závorky jen tam, kde jsou nutné, správně odsazuj...

Re: Program v C - znaky

Napsal: pon 19. říj 2009, 22:36
od marek16
hele, celý jsem to nečetl, ale už po pár řádcích je mi jasný že to prostě fungovat nemůže.

= je operátor přiřazení, říkáš jím počítači: přiřaď pravou hodnotu do levé!

Naproti tomu operátor rovnosti jsou dvě rovnítka (==) bez závorek a ten použiješ do těch svých IFů když chceš vyjádřit "pokud se X rovná deseti".

Re: Program v C - znaky

Napsal: pon 19. říj 2009, 22:39
od beardie
jeden switch miesto 30 riadkov ifov...