Ongelma tietuerakenteen kanssa

Kaatuillen

Tossa ohessa ohjelmanpätkä, jonka pitäisi luoda itse määrittelemälleni tietotyypille "ihminen" tietuetaulukko. Ohjelman pitäisi tehdä seuraavaa:

- Kysyy käyttäjältä, montako tietoa syötetään (Max 10 kpl)

- Tallentaa noin monta kappaletta tietoja tietuetaulukkoon

Tuo menee kääntäjästä läpi virheittä mutta sitten ohjelma kaatuu. Missä mahtaa olla vika?

#include
#include

#define KOKO 10
#define PITUUS 20

typedef struct
{
   char nimi[PITUUS];
   int vuosii;

}ihminen_t;

int
main(void)
{
   ihminen_t tieto[KOKO];

   int varattu, i;

   /* Syötä tiedot */

   printf("Montako tietoa annetaan > ");
   scanf("%d", & varattu);

   for (i = 0; i < varattu; i)
   {
      printf("\nAnna nimi > ");
      gets("tieto[i].nimi");

      printf("\nAnna ikä > ");
      scanf("%d", & tieto[i].vuosii);
   }


}

4

412

    Vastaukset 4

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • ...

      gets("tieto[i].nimi") lainausmerkit

      • Kaatuillen

        No niinpäs olikin. Olin ensin kirjoittamassa siihen scanf:ää mutta vaihdoinkin getsiin ja nuo sulut unohtuivat.

        Ohjelmoinnin hienoja puolia... Etsin pitkään ja hartaasti vikaa ja se oli jotain noin pientä. Kiitos paljon avusta! :)


    • teuro

      Edellä tulikin jo kysymykseen ratkaisu. Laitan kuitenkin muokatun version c ja STL vektoreilla toteutettuna.

      #include
      #include
      #include

      using namespace std;

      const int maara = 10;

      class Henkilo{
         private:
            string nimi;
            int vuosi;
         public:
            Henkilo(string n, int v){
               this -> nimi = n;
               this -> vuosi = v;
            }
            
            Henkilo(){}
      };

      vector Henkilot;

      int main(){

      int varattu, i;
      string nimi;
      int vuosi;

      /* Syötä tiedot */

      cout nimi;

      cout vuosi;

      Henkilot.push_back(Henkilo(nimi, vuosi));
      }
      }

      Olkaapa hyvät.

    • adasdasdasdas

      #include
      #include

      typedef struct
      {
      char* nimi;
      int vuosii;

      }ihminen_t;

      int main()
      {
      ihminen_t* tieto;
      int varattu, i;

      /* Syötä tiedot */

      printf("Montako tietoa annetaan > ");
      scanf("%d", &varattu);

      tieto=(ihminen_t*)malloc(varattu*sizeof(ihminen_t));

      for (i = 0; i < varattu; i)
      {
      printf("\nAnna nimi > ");
      gets(tieto[i].nimi);

      printf("\nAnna ikä > ");
      scanf("%d", &tieto[i].vuosii);
      }
      free(tieto);
      return 1;
      }

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Mikä kaivatussasi ärsyttää

      Juuri nyt, tällä hetkellä?
      Ikävä
      106
      1271
    2. Salaisuudet paljastuu

      Viimeiset hetket meneillään ottaa yhteyttä. Kertoa totuus ja selvittää asioita. Viimeiset hetket meneillään jos joku
      Ikävä
      94
      898
    3. Poliisi pamputti Variskankaalla

      Mistä lie alkanut ja miksi poliisit kutsuttu, mutta mielestäni hyvin toimittu. Jos haluaa rähistä eikä rauhoitu puheella
      Kajaani
      31
      804
    4. vapaa

      sana :) 🚮
      Ikävä
      66
      693
    5. 32
      635
    6. Karita Tykkä mennyt kihloihin.

      Onnittelu kuuluu hänelle ja tulevalle aviopuolisolleen.
      Kotimaiset julkkisjuorut
      93
      632
    7. S-ryhmän ihmisoikeuslinja ei kestä omaa hankintaketjuaan

      S-ryhmän Israel-boikotin suurin uskottavuusongelma löytyy yllättävän läheltä, SOK:n omien tuotemerkkien hankintaketjuist
      Maailman menoa
      16
      584
    8. Nainen tosi ikävä sua

      Näkispä edes ohimennen
      Ikävä
      18
      568
    9. Haavoittuvuutesi on aseista riisuvaa

      Harmi, etten voi osoittaa sinulle tunteita. Hyvää yötä miehelle. Naiselta
      Ikävä
      43
      533
    10. Rakennus myynnissä

      Joko se loppuu mehtä hallitus sumilta?
      Suomussalmi
      10
      476
    Aihe