Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 6 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 02.06.13
Prihlásený: 07.06.16
Príspevky: 63
Témy: 18
Príspevok NapísalOffline : 12.10.2014 0:28

Zdravim,
mam mensie trouble s podmienkov v mojom kode.
Spoiler: zobraziť
Kód:
#include <stdio.h>
int main()
{
   int N,i,j;
   scanf("%d",&N);
   if(N < 1 || N > 15 || N%2 == 0)
      printf("Zly vstup\n");

   else
   {
      for(i=0;i< 2 * N-1;i++)
      {   
         putchar('\n');
         for(j=0;j<N;j++)
         {   
            /*i+1
            2*N-i-1*/
            if(j <2*N-i-1)
            putchar('*');
         else
            putchar('-');
         }
      }
   }
   putchar('\n');
   return 0;
}

Spoiler: zobraziť
Kód:
./trojuholnik
5

*****
*****
*****
*****
*****
****-
***--
**---
*----

Spoiler: zobraziť
Kód:
#include <stdio.h>
int main()
{
   int N,i,j;
   scanf("%d",&N);
   if(N < 1 || N > 15 || N%2 == 0)
      printf("Zly vstup\n");

   else
   {
      for(i=0;i< 2 * N-1;i++)
      {   
         putchar('\n');
         for(j=0;j<N;j++)
         {   
            /*i+1
            2*N-i-1*/
            if(j < i+1)
            putchar('*');
         else
            putchar('-');
         }
      }
   }
   putchar('\n');
   return 0;
}

Spoiler: zobraziť
Kód:
./trojuholnik5

*----
**---
***--
****-
*****
*****
*****
*****
*****

obe polovice mam len neviem ako ich dat do 1 celku skusal som selico.
Finalne ma vyjst toto
Spoiler: zobraziť
Kód:
*----
**---
***--      
****-
*****
****-
***--
**---
*----

Dakujem za mozne navrhy napady.


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 12.10.2014 1:55

Použi v tej podmienke and (&&). :)


Offline

Užívateľ
Užívateľ
Tojuholnik v C * a -

Registrovaný: 15.01.07
Prihlásený: 23.09.15
Príspevky: 186
Témy: 3
Bydlisko: ZV/BA
Príspevok NapísalOffline : 12.10.2014 2:09

Kód:
#include <stdio.h>
int main()
{
   int N,i,j;
   scanf("%d",&N);
   if(N < 1 || N > 15 || N%2 == 0)
      printf("Zly vstup\n");

   else
   {
      for(i=0;i< 2 * N-1;i++)
      {   
         putchar('\n');
         for(j=0;j<N;j++)
         {   
            /*i+1
            2*N-i-1*/
            if( (j<i+1 && i<N) || (j<2*N-i-1 && i>=N))
            putchar('*');
         else
            putchar('-');
         }
      }
   }
   putchar('\n');
   return 0;
}


chcel som zanechat tvoj pristup, takze len upravenie ifu, proste pridanie kontroly, ze ked idem s riadkami po N, tak sa pyta na to i+1 a ked idem s i nad N, tak sa pyta na druhe







_________________
nb: Lenovo Thinkpad E520 (starsi pan uz), Fedora 20 / Win7 dualboot
" 1000.times { puts "I will not spam on the boards" } "
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 02.06.13
Prihlásený: 07.06.16
Príspevky: 63
Témy: 18
Príspevok Napísal autor témyOffline : 12.10.2014 8:20

Vdaka aj za vysvetlenie ;)


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 12.10.2014 11:20

Stačilo spojiť tie tvoje dve kontroly a použiť && :)


Offline

Užívateľ
Užívateľ
Tojuholnik v C * a -

Registrovaný: 24.08.12
Prihlásený: 09.02.19
Príspevky: 59
Témy: 0
Príspevok NapísalOffline : 12.10.2014 18:48

Vždycky je víc způsobů jak stáhnout kočku z kůže, a tisíc programátorů napíše stejný program tisíci různými způsoby. Tak zkus u každé úlohy zapřemýšlet jestli by se nedala udělat jinak:

Kód:
#include <stdio.h>



void trojuhelnik(int hvezd,int sloupcu)
     {
     int i=1,j;

     do {
        for (j=0;j<sloupcu;++j)
            putchar(j<hvezd?'*':'-');
        putchar('\n');
        if (i && hvezd<sloupcu)
           trojuhelnik(hvezd+1,sloupcu);
        } while (i-- && hvezd<sloupcu);
     }



int main(void)
    {
    int i,j,krok,vyska;

    /*******************************************
     * načtení a kontrola uživatelského vstupu *
     *******************************************/
    printf("Zadej počet sloupců: ");
    if (!scanf("%d",&vyska) || vyska<1 || vyska>15 || !(vyska&1))
       {
       printf("Chybné zadání!\n!");
       return 1;
       }

    /*****************************************************
     * varianta 1 - naivní řešení - dva cykly tam a zpět *
     *****************************************************/
    for (i=1;i<vyska;++i)
        {
        for (j=1;j<=vyska;++j)
            putchar(j<=i?'*':'-');
        putchar('\n');
        }
    for (;i;--i)
        {
        for (j=1;j<=vyska;++j)
            putchar(j<=i?'*':'-');
        putchar('\n');
        }
    putchar('\n');

    /***********************************************************
     * varianta 2 - to Pascal neudělá - cyklus se změnou kroku *
     ***********************************************************/
    for (krok=1,i=1;i;i+=krok)
        {
        for (j=1;j<=vyska;++j)
        putchar(j<=i?'*':'-');
        if (i==vyska)
           krok=-krok;
        putchar('\n');
        }
    putchar('\n');

    /******************************************************
     * varianta 3 - trocha programátorské magie - rekurze *
     ******************************************************/
    trojuhelnik(1,vyska);

    return 0;
    }








_________________
"Existuje pouze jeden člověk, který má méně přátel než Bill Gates, a tím je Saddám Husajn." (Paul Grayson)
Odpovedať na tému [ Príspevkov: 6 ] 


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra