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);
}
}
- 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);
}
}
Vastaukset 4
Vanhimmat
gets("tieto[i].nimi") lainausmerkit
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! :)
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.
#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;
}