Results 1 to 5 of 5

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    user-friendly 0wn3r's Avatar
    Join Date: Mar:2006
    Location: Bulgaria,Plovdiv
    Posts: 1,165

    Âúïðîñ çà C

    Ñëåäíàòà êðàòêà ïðîãðàìêà ïðàâè íåùî, êîåòî íå ðàçáèðàì... òî ñúñ ñèãóðíîñò å ìíîãî ïðîñòî è âñå ïàê íèêúäå íå ãî ïèøå, òà ðåøèõ äà ïîïèòàì.
    Code:
    #include <iostream.h>
    #include <string.h>
    #include <stdio.h>
    int main ()
    {
        char str[10], *p;
        printf ("Enter string: ");
        gets (str);
        p=str;
        while (*p && *p!=' ') p++;
        printf (p);
        system ("pause");
        return 0;
    }
    Òàêà, òàçè ïðîãðàìà ÷åòå íèç è òúðñè ïúðâèÿ èíòåðâàë.Àêî íàìåðè òàêúâ, îòïå÷àòâà îñòàòúêà îò íèçà. Òîâà, êîåòî íå ðàçáèðàì å çàùî ôðàãìåíòà "printf (p);" íå ïîêàçâà ñàìî ïúðâèÿ çíàê ñëåä èíòåðâàëà, à öåëèÿ íèç ñëåä èíòåðâàëà.

    Àç áèõ ãî íàïðàâèë òàêà:
    while(*p) { printf (*p); p++;} íî òîâà íå ðàáîòè åñòåñòâåíî. Íåðàçáèðàíåòî ìè å ïîðîäåíî îò òîâà, ÷å óæ óêàçàòåëÿ ñúäúðæà àäðåñà íà ïðîìåíëèâà, è ïðè printf (p) î÷àêâàì äà âèäÿ àäðåñà òàì äîêúäåòî å ñòèãíàëî èíêðåìåòèðàíåòî íà p. Âúïðîñúò ìè å êàê ðåàëíî ñòàâàò íåùàòà òóê?

  2. #2
    ɐ-əpoɔᴉu⋂ ɐí íəÔ anrieff's Avatar
    Join Date: Apr:2004
    Location: Sofia
    Posts: 8,448
    Ïðî÷åòè ïî-âíèìàòåëíî êàê ðàáîòè printf. Àêî èñêàø äà ïå÷àòàø öÿë ñòðèíã, òðÿáâà äà ïîëçâàø printf("%s", p);. Àêî èñêàø ñàìî åäèíñòâåí ñèìâîë (òâîÿ ïîäõîä) - òðÿáâà äà å printf("%c", *p);.
    Åòî òàêà ñå ïëîäÿò òå, êàçâàì ñè àç. Ïîä íîñà òè.
    "640K îught to be enough for anybody" - Bill Gates, 1981
    Òåñòîâå íà áàòåðèè::Machine specs::Fract::AGG::ÍåÑåÑúðäè×îâå÷å::Baileys::blog::YouTube channel

  3. #3
    philosophus duratea icaci's Avatar
    Join Date: Oct:2006
    Location: Aachen
    Posts: 2,698
    printf(p) èçâåæäà íèçà, ñî÷åí îò p, çàùîòî ãî âúçïðèåìà êàòî ôîðìàòåí ñïåöèôèêàòîð, êàêúâòî òðÿáâà äà å ïúðâèÿò àðãóìåíò íà printf. Àêî â íåãî íÿìà êîìáèíàöèè îò ñèìâîëè, êîèòî ìîãàò äà ñå èíòåðïðåòèðàò êàòî ôîðìàòíè ñïåöèôèêàòîðè (%íåùî), òî ùå ñå èçâåäå öÿëàòà ñòîéíîñò íà íèçà. Òîâà å ìàëêî... íåòðàäèöèîíåí ïîäõîä êúì èçâåæäàíå íà íèçîâå, ïðèçíàâàì Èíà÷å çà èçâåæäàíå íà åäèí ñèìâîë ñå ïîëçâà putchar(*p). Àêî ïúê èñêàø äà âèäèø ñòîéíîñòòà íà ñàìîòî p (àäðåñà íà óêàçàòåëÿ, à íå ñòîéíîñòòà, êîÿòî òîé ñî÷è), òî ïîìàãà printf("%x", p).
    Internet - it doesn't make you stupid, it just makes your stupidity more accessible to others

  4. #4
    user-friendly 0wn3r's Avatar
    Join Date: Mar:2006
    Location: Bulgaria,Plovdiv
    Posts: 1,165
    Áëàãîäàðÿ.

  5. #5
    user-friendly 0wn3r's Avatar
    Join Date: Mar:2006
    Location: Bulgaria,Plovdiv
    Posts: 1,165
    Ìàëêî äà úïíà òåìàòà, ÷å ïàê èìàì âúïðîñ÷å

    Çíà÷èè ñÿ ðåøàâàì ñëåäíàòà çàäà÷à:

    Äàäåíà å ìàòðèöà unsigned a[5][5]. Äà ñå íàïèøå ôóíêöèÿ void fillMatrix (a[][5], unsigned n), êîÿòî çàïúëâà ñ ÷èñëà åëåìåíòèòå a[][] ïî ñëåäíèÿ íà÷èí:
    Ñåãà òóê å íÿêàêâà ãðàôèêà, íî ùå îáÿñíÿ êàêâî ïðåäñòàâëÿâà. Âñè÷êè ÷èñëà ïî ãëàâíèÿ äèàãîíàë ñà íóëè.Ïîñëå, ïîä ãëàâíèÿ äèàãîíàë çàïî÷âà çàïúëâàíå ïî ñòúëáîâå, êàòî íà ïúðâèÿ ñòúëá ñà ÷èñëàòà îò 1-4, íà âòîðèÿ îò 5-7, òðåòèÿ 8-9, ÷åòâúðòèÿ 10, (a[0][0] è a[n][n] ñà îò ãëàâíèÿ äèàãîíàë è ñà íóëè). Ïîñëå, çàïúëâàíåòî ïðîäúëæàâà íàä ãëàâíèÿ äèàãîíàë, çàïî÷âàéêè îò a[4][5] (÷èñëîòî íàä a[5][5]) ñ 11, è òàêà ïîñëåäíèÿ ñòúëá - 11-14, ïðåäïîñëåäíèÿ 15-17, òðåòèÿ 18-19, âòîðè - 20. Ðåøèõ âñå ïàê äà íàïðàâÿ èìïðîâèçèðàíà òàáëèöà:

    0 20 19 17 14
    1 0 18 16 13
    2 5 0 15 12
    3 6 8 0 11
    4 7 9 10 0

    Îïðàâèõ ñå, åòî ðåøåíèåòî.
    Code:
    #include <iostream.h>
    #include <iomanip.h>
    
    using namespace std;
    
    void fillMatrix(unsigned a[][5], unsigned n);
    
    unsigned int a[5][5], i, j, step = 0;
    const int n = 5;
    
    int main (void)
    {
        fillMatrix (a, n);
        
        for (i = 0; i < n; i++)
        {
             for (j = 0; j < n; j++)    
                 cout<<setw(5)<<a[i][j]; 
                 
             cout<<endl;
        }
        
        system ("pause");
        return 0;
    }
    
    void fillMatrix(unsigned a[][5], unsigned n)
    {
         
         for(i=0; i<n ; i++)
           for(j=0; j<n; j++)  a[i][j]=0; 
         
         for (j=0; j<n-1; j++)                  
           for (i=1; i<n; i++)
             {
                step++;
                a[i][j] = step;
             }
          
         step = 21;
            
         for (j=1; j<n; j++)       
           for (i=0 ; i<j ; i++)
             {
                step--;
                a[i][j] = step;
             }
    }
    Last edited by 0wn3r; 4th May 2009 at 00:04.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Copyright © 1999-2011 Õàðäóåð ÁÃ. Âúçìîæíî å ñúäúðæàíèåòî íà òàçè ñòðàíèöà äà å îáåêò íà àâòîðñêè ïðàâà.
iskamPC.com | mobility.BG | Bloody's Techblog | Êðèïòîâàëóòè è ìàéíèíã | 3D Vision Blog | Ìàãàçèí çà åëåêòðîííè öèãàðè