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

Zacinam v C – C / C++ – Fórum – Programujte.comZacinam v C – C / C++ – Fórum – Programujte.com

 

David
~ Anonymní uživatel
175 příspěvků
17. 10. 2012   #1
-
0
-

Zdravím,

začínam programovat v C a narazil jsem na problem ktery už řeším druhým dnem.

Chci aby když uživatel zadá zaporný číslo nebo znak tak se vytiskne "Nespravny vstup".

if (a <= 0 )
          {
          printf("Nespravny vstup.\n");
          return 0;
          }

Nahlásit jako SPAM
IP: 2001:718:1001:698:584:224...–
KIIV
~ Moderátor
+43
God of flame
17. 10. 2012   #2
-
0
-

a co ti na tom nefunguje? pominu li ze to veme i 0 jako nespravny vstup (a znaky budes muset resit testem navratove hodnoty ze scanf nebo cim to nacitas)

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
David
~ Anonymní uživatel
175 příspěvků
17. 10. 2012   #3
-
0
-

if (znak == 'a')
       {
       printf("Zadejte stranu ctverce:\n");
       scanf("%lf", &a);

       if (a <= 0 )
          {
          printf("Nespravny vstup.\n");
          return 0;
          }

       obsah = a*a;
       obvod = 4*a;

       printf("Obsah ctverce je: %.4f\n", obsah);
       printf("Obvod ctverce je: %.4f\n", obvod);
       }

No, že když třeba zadám  -8 tak se to vypočítá místo toho aby to vytisklo "Nespravny ...

Nahlásit jako SPAM
IP: 2001:718:1001:698:584:224...–
ingiraxo+15
Grafoman
17. 10. 2012   #4
-
0
-

tušim že to myslí takto 

int cislo;
char buffer[64]; // 64 znaků pro nějakej vstup

printf("Zadej cislo: ");
fgets(buffer, sizeof(buffer), stdin); // načte vstup do bufferu
// převede data v bufferu na číslo... pokud to selže, tak vrací 0
cislo = atoi(buffer);

if (cislo > 0) { ... }
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
David
~ Anonymní uživatel
175 příspěvků
17. 10. 2012   #5
-
0
-

pořád to nepozná zda je to číslo nebo znak

Nahlásit jako SPAM
IP: 2001:718:1001:698:584:224...–
ingiraxo+15
Grafoman
17. 10. 2012   #6
-
0
-

naco znak? však zadáváš císlo (délku strany ctverece)

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
KIIV
~ Moderátor
+43
God of flame
17. 10. 2012   #7
-
0
-

int pocet_nactenych_polozek = scanf("%lf",a);

if ( pocet_nactenych_polozek == 0 ) fail...

(pripadne dej celej kod.. kdo vi co tam mas zmatlanyho)

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
David
~ Anonymní uživatel
175 příspěvků
17. 10. 2012   #8
-
0
-

tady je to co jsem zmatlal dohromady

int main()
    {
    char znak;
    double a, b, r, obsah, obvod;
   

    printf("Zadejte rovinny obrazec, jehoz obsah a obvod chcete spocitat: a - ctverec, b - obdelnik, c - kruh\n");
    scanf("%c", &znak);

    /* ctverec */
    if (znak == 'a')
       {
       printf("Zadejte stranu ctverce:\n");
       scanf("%lf", &a);
     
       
       if (a < 0)
          {
          printf("Nespravny vstup.\n");
          return 0;
          }

       obsah = a*a;
       obvod = 4*a;

       printf("Obsah ctverce je: %.4f\n", obsah);
       printf("Obvod ctverce je: %.4f\n", obvod);
       }

    /* obdelnik */
    else if (znak == 'b')
            {
            printf("Zadejte strany obdelniku:\n");
            scanf("%lf %lf", &a, &b);

            if ((a < ':') || (b < ':'))
               {
               printf("Nespravny vstup.\n");
               return 0;
               }

            obsah = a*b;
            obvod = (2*a) + (2*b);

            printf("Obsah obdelniku je: %.4f\n", obsah);
            printf("Obvod obdelniku je: %.4f\n", obvod);
            }

         /* kruh */
         else if (znak == 'c')
                 {
                 printf("Zadejte polomer kruznice:\n");
                 scanf("%lf", &r);

                 if (r < ':')
                    {
                    printf("Nespravny vstup.\n");
                    return 0;
                    }

                 obsah = M_PI * r * r;
                 obvod = 2 * M_PI * r;

                 printf("Obsah kruznice je: %.4f\n", obsah);
                 printf("Obvod kruznice je: %.4f\n", obvod);
                 }
              else
                 printf("Nespravny vstup.\n");

Nahlásit jako SPAM
IP: 2001:718:1001:698:584:224...–
KIIV
~ Moderátor
+43
God of flame
17. 10. 2012   #9
-
0
-

co vubec znamena u obdelniku: if ((a < ':') || (b < ':'))  ?? fungovat to sice bude ale nejsem si jist jestli chces mit strany mensi nez ascii hodnota ':'

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
KIIV
~ Moderátor
+43
God of flame
17. 10. 2012   #10
-
0
-

kazdopadne:

    printf("Zadejte stranu ctverce:\n");
    int res = scanf("%lf", &a);

    if ((res!=1) || (a<0)) {

udela svoje

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
David
~ Anonymní uživatel
175 příspěvků
17. 10. 2012   #11
-
0
-

#10 KIIV
Díky moc už to jde jak ja chci a ten obdelík to je takovy vystřel do tmy :D

Nahlásit jako SPAM
IP: 2001:718:1001:698:584:224...–
David
~ Anonymní uživatel
175 příspěvků
17. 10. 2012   #12
-
0
-

poslední dotaz :) vidí někdo někde chybu

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define M_PI 3,14159265358979323846
int main()
    {
    char znak;
    double a, b, r, obsah, obvod;

 

    printf("Zadejte rovinny obrazec, jehoz obsah a obvod chcete spocitat: a - ctverec, b - obdelnik, c - kruh\n");
    scanf_s("%c", &znak);

    /* ctverec */
    if (znak == 'a')
       {
       printf("Zadejte stranu ctverce:\n");
       int res = scanf_s("%lf", &a);
     
       
       if ((res!=1) || (a<0))
          {
          printf("Nespravny vstup.\n");
          return 0;
          }

       obsah = a*a;
       obvod = 4*a;

       printf("Obsah ctverce je: %.4f\n", obsah);
       printf("Obvod ctverce je: %.4f\n", obvod);
       }

    /* obdelnik */
    else if (znak == 'b')
            {
            printf("Zadejte strany obdelniku:\n");
            int res = scanf_s("%lf %lf", &a, &b);

            if ((res!=1) || (a,b<0))
               {
               printf("Nespravny vstup.\n");
               return 0;
               }

            obsah = a*b;
            obvod = (2*a) + (2*b);

            printf("Obsah obdelniku je: %.4f\n", obsah);
            printf("Obvod obdelniku je: %.4f\n", obvod);
            }

         /* kruh */
         else if (znak == 'c')
                 {
                 printf("Zadejte polomer kruznice:\n");
                 int res = scanf_s("%lf", &r);
    
                 if ((res!=1) || (r<0))
                    {
                    printf("Nespravny vstup.\n");
                    return 0;
                    }

                 obsah = M_PI*r * r;
                 obvod = 2 *M_PI * r;

                 printf("Obsah kruznice je: %.4f\n", obsah);
                 printf("Obvod kruznice je: %.4f\n", obvod);
                 }
              else
                 printf("Nespravny vstup.\n");

return 0;
  
    }

Nahlásit jako SPAM
IP: 2001:718:1001:698:9dec:5d...–
David
~ Anonymní uživatel
175 příspěvků
17. 10. 2012   #13
-
0
-

protože moje MVS 2010 mi pořád haže tuhle chybu : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt

Nahlásit jako SPAM
IP: 2001:718:1001:698:9dec:5d...–
liborb
~ Redaktor
+18
Guru
18. 10. 2012   #14
-
0
-
Nahlásit jako SPAM
IP: 188.75.135.–
David
~ Anonymní uživatel
175 příspěvků
19. 10. 2012   #15
-
0
-

nevíte prosím proč to poslední číslo jakoby nezpracuje

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    printf("Zadej posloupnost cisel ke zpracovani\n");
   
    int cislo;
    int s0,s1,s2,s3,s4,s5,s6,s7,s8,s9;


    while(scanf("%d",&cislo)==1){

    if(cislo<0)
            printf("Cislo %d, je zaporne, takove neberu", cislo);
    continue;
    }

    s0=s1=s2=s3=s4=s5=s6=s7=s8=s9=0;

     do{(cislo/=10);
        switch (cislo%10){
                case 0: ++s0;  break;
                case 1: ++s1;  break;
                case 2: ++s2;  break;
                case 3: ++s3;  break;
                case 4: ++s4;  break;
                case 5: ++s5;  break;
                case 6: ++s6;  break;
                case 7: ++s7;  break;
                case 8: ++s8;  break;
                case 9: ++s9;  break;
                }
        }   while (cislo>0);
       
       

printf("Zadane cislo se sklada z cislic: \n 0 ... %dx \n 1 ... %dx \n 2 ... %dx \n 3 ... %dx \n 4 ... %dx \n 5 ... %dx \n 6 ... %dx \n 7 ... %dx \n 8 ... %dx \n 9 ... %dx \n",s0,s1,s2,s3,s4,s5,s6,s7,s8,s9);


system("pause");
    return 0;
}

Nahlásit jako SPAM
IP: 89.203.143.–
vítek
~ Anonymní uživatel
14 příspěvků
19. 10. 2012   #16
-
0
-

Davide už to mám!  :)

Nahlásit jako SPAM
IP: 89.203.143.–
David
~ Anonymní uživatel
175 příspěvků
20. 10. 2012   #17
-
0
-

#10 KIIV


a jak to bude pro obdelnik ? 

if ((res!=1) || (a<0 || b<0)) takhle asi ne :)

Nahlásit jako SPAM
IP: 89.203.143.–
KIIV
~ Moderátor
+43
God of flame
20. 10. 2012   #18
-
0
-

#17 David
res = scanf("%lf%lf",&a,&b); vrati pocet skutecne nactenych parametru... a tady mas dva

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
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, 10 hostů

Podobná vlákna

Začinam s programem — založil Nery

Začínám s PLC — založil stoker303

Začínám v .NET — založil TomasUL

Pomozte teprve začínám — založil plato12

Začínám HTML/CSS — založil prgrmr232

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ý