Printf v C - identifier expected – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Printf v C - identifier expected – C / C++ – Fórum – Programujte.comPrintf v C - identifier expected – C / C++ – Fórum – Programujte.com

 

tap97010
Newbie
7. 7. 2011   #1
-
0
-

Ahoj. nevíte v čem je problém na ř. 111? TCC mi háže:

Identifier expected

tady je zdroj:

/*
 * Kaukulacka.c	v. 5.0.0
 *
 * Kaukulačka
 *
 * LEdoian 7.7.2011
 */
#include <stdio.h>
#include <conio.h>

int main (void){
	float vysl;	
    float a;		 // Definice
    float b;		 // vsech
    float c;		 // promennych
    char co[2];
    float d;
    char ukon[1];
    int mocnit;
    int smazat;
	
	printf("=======================\n LEdoianova KALKULACKA \n=======================\n\n1)Desetinna TECKA\n2)NEpripisujte jednotky"); 
    while (ukon!='A'){
		    printf("\nCo to bude?\nScitat +\nOdcitat -\nNasobit *\nDelit /\nObvod o\nObsah S\nPovrch P\nObjem V\nMocit ^\nNasobit vice cisel **\nScitat vice cisel ++\n");
			scanf("%s", co);
		    }
		  switch (co){
		  case '+':
		    printf("Co budeme scitat?");
			scanf("%f", &a);
			printf("+");
			scanf("%f", &b);
		    vysl = a + b;
		    break;
		  case '-':
		    printf("Co budeme odcitat?");
		    scanf("%f", &a);
			printf("-");
			scanf("%f", &b);
		    vysl = a - b;
		    break;
		  case '*':
		    printf("Co budeme nasobit?");
			scanf("%f", &a);
			printf("*");
			scanf("%f", &b);
		    vysl = a * b;
		    break;
		  case '/':
		    printf("Co budeme delit?");
			scanf("%f", &a);
			printf("/");
			scanf("%f", &b);
		    vysl = a / b;
		    break;
		  case 5:
		   vysl = a * 4;
		   break;
          case 6:
		   vysl = (a + b) * 2;
		   break;
		  case 7:
		   vysl = a * a;
		   break;
		  case 8:
		   vysl = a * b;
		   break;
		  case 9:
		   vysl = a * a * 6;
		   break;
		  case 10:
		   vysl = (a * b + b * c + c * a) * 2;
		   break;
		  case 11:
		   vysl = a * a * a;
		   break;
		  case 12:
		   vysl = a * b * c;
		   break;
		  case 13:
		   vysl = a;
		   for( mocnit=1; mocnit<b; mocnit++ ) 
		     vysl = vysl * a;
		   break;
		  case 14:
		   vysl = a * b * c;
		   break;
		  case 15:
		   vysl = a + b + c;
		   break;
		  case 16:
		   vysl = a * b * c * d;
		   break;
		 case 17:
		   vysl = a + b + c + d;
		   break;
		 default:
		   printf("Nic jsi nechtel.\a\n");
		   vysl = a;
		   break;
		 }
         printf("=%f.\n\n", vysl);
         getch();
         printf("'A' pro ukonceni\n");
         scanf("%s", ukon);
         printf("Zadejte 2 pro vymazani obrazovky nebo jine cislo pro ponechani:");
         scanf("%d", &smazat);
         if (smazat==2)
		   system("cls");
         }
	printf("Nashledanou");		// Idetifier expected
	getch();
    }

Nevidím chybu, i když zkopíruju jiné printf(a upravím text), tak zase, vždy na řádku 111, jinde ne. Co tam je špatně???

Nahlásit jako SPAM
IP: 82.150.162.–
liborb
~ Redaktor
+18
Guru
7. 7. 2011   #2
-
+1
-
Zajímavé

Nejspíš chybějící závorka o 3 řádky výše.

Nahlásit jako SPAM
IP: 78.80.52.–
tap97010
Newbie
7. 7. 2011   #3
-
0
-

a jo... ta zavorka mi ukoncuje main funkci :) Dik :-D

Nahlásit jako SPAM
IP: 82.150.162.–
tap97010
Newbie
7. 7. 2011   #4
-
0
-

Vlastně ne. ta závorka o řádek nahoru mi ukončuje main :D

Teď nefuguje celej switch :C

/*
 * Kaukulacka.c	v. 5.0.0
 *
 * Kaukulačka
 *
 * LEdoian 7.7.2011
 */
#include <stdio.h>
#include <conio.h>

int main (void){
	float vysl;	
    float a;		 // Definice
    float b;		 // vsech
    float c;		 // promennych
    char co[2];
    float d;
    char ukon[1];
    int mocnit;
    int smazat;
	
	printf("=======================\n LEdoianova KALKULACKA \n=======================\n\n1)Desetinna TECKA\n2)NEpripisujte jednotky"); 
    while (ukon!='A'){
		    printf("\nCo to bude?\nScitat +\nOdcitat -\nNasobit *\nDelit /\nObvod o\nObsah S\nPovrch P\nObjem V\nMocit ^\nNasobit vice cisel **\nScitat vice cisel ++\n");
			scanf("%s", co);
			switch (co){		//Nefunguje
			case '+':
				printf("Co budeme scitat?");
				scanf("%f", &a);
				printf("+");
				scanf("%f", &b);
				vysl = a + b;
				break;
			case '-':
				printf("Co budeme odcitat?");
				scanf("%f", &a);
				printf("-");
				scanf("%f", &b);
				vysl = a - b;
				break;
			case '*':
				printf("Co budeme nasobit?");
				scanf("%f", &a);
				printf("*");
				scanf("%f", &b);
				vysl = a * b;
				break;
			case '/':
				printf("Co budeme delit?");
				scanf("%f", &a);
				printf("/");
				scanf("%f", &b);
				vysl = a / b;
				break;
			case 5:
				vysl = a * 4;
				break;
			case 6:
				vysl = (a + b) * 2;
				break;
			case 7:
				vysl = a * a;
				break;
			case 8:
				vysl = a * b;
				break;
			case 9:
				vysl = a * a * 6;
				break;
			case 10:
				vysl = (a * b + b * c + c * a) * 2;
				break;
			case 11:
				vysl = a * a * a;
				break;
			case 12:
				vysl = a * b * c;
				break;
			case 13:
				vysl = a;
				for( mocnit=1; mocnit<b; mocnit++ ) 
					vysl = vysl * a;
				break;
			case 14:
				vysl = a * b * c;
				break;
			case 15:
				vysl = a + b + c;
				break;
			case 16:
				vysl = a * b * c * d;
				break;
			case 17:
				vysl = a + b + c + d;
				break;
			default:
				printf("Nic jsi nechtel.\a\n");
				vysl = a;
				break;
			}
         printf("=%f.\n\n", vysl);
         getch();
         printf("'A' pro ukonceni\n");
         scanf("%s", ukon);
         printf("Zadejte 2 pro vymazani obrazovky nebo jine cislo pro ponechani:");
         scanf("%d", &smazat);
         if (smazat==2)
		   system("cls");
		}
	printf("Nashledanou");
	getch();
    }

-hází default :C 

Nahlásit jako SPAM
IP: 82.150.162.–
liborb
~ Redaktor
+18
Guru
7. 7. 2011   #5
-
0
-

Když už tak

switch (co[0]){

ale jinak tam můžou být i další chyby :)

Nahlásit jako SPAM
IP: 78.80.52.–
KIIV
~ Moderátor
+43
God of flame
7. 7. 2011   #6
-
0
-

hlavne pouzivej tabulatory bud vsude nebo nikde - cokoliv mezi tim vede k paskvilu jako je

A tvuj kod:

char co[2];
...
scanf("%s",co);

je velice nebezpecna konstrukce

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
tap97010
Newbie
7. 7. 2011   #7
-
0
-

Proč

Nahlásit jako SPAM
IP: 82.150.162.–
liborb
~ Redaktor
+18
Guru
7. 7. 2011   #8
-
0
-

Když zadáš víc jak jeden znak (což lze), tak si v průseru.

Nahlásit jako SPAM
IP: 78.80.52.–
KIIV
~ Moderátor
+43
God of flame
7. 7. 2011   #9
-
0
-

#7 tap9701
dejme tomu ze ti zadam na vstupu:

ajskdjfksjdksjdkjskdjksjdkfjskdjfksdjfksjdfkjskdjfksjdkjfksjdkfjskdjfksdjfksjdfksjdfkjsdkfj...... (+ treba tisice dalsich znaku bez mezer)

co myslis ze se stane? Kdyz tam mas misto na jeden znak + ukoncovaci \0? Nacitas CELE jedno slovo (a to muze byt libovolne dlouhe)

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Peppy0
Stálý člen
7. 7. 2011   #10
-
-1
-
Mimo téma

A je tam možnosť deliť NULOU ! :) :)

Nahlásit jako SPAM
IP: 85.135.148.–
Qt, QML, C++
tap97010
Newbie
7. 7. 2011   #11
-
0
-

#9 KIIV
Jak to ošetřím? :D

Nahlásit jako SPAM
IP: 82.150.162.–
crazy
~ Moderátor
+10
Grafoman
7. 7. 2011   #12
-
+1
-
Zajímavé

scanf("%1s", string); - načte pouze 1 znak

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
tap97010
Newbie
7. 7. 2011   #13
-
0
-

thx :D

Nahlásit jako SPAM
IP: 82.150.162.–
crazy
~ Moderátor
+10
Grafoman
7. 7. 2011   #14
-
0
-

samozřejmě pokud to budeš načítat do char* :D

jinak se jeden znak načte samozřejmě takto: scanf("%c", znak);

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
Peppy0
Stálý člen
7. 7. 2011   #15
-
0
-

By ma zaujímalo, prečo som dostal zlú karmu ? Lebo je to OT alebo sa to nepáčilo programátorovi? Navyše už sa tu riešia jeho prekérne chyby v programe.

Nahlásit jako SPAM
IP: 85.135.148.–
Qt, QML, C++
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 88 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý