Gå til innhold

%f tar ikke i mot informasjon til doubles?


Anbefalte innlegg

Hei!

Skal snart ha tentamen, og har i den anledning gått gjennom tidligere tentamener, men blir stuck på en oppgave.

 

Tentamen her:

http://aass.oru.se/~tpy/c/2009-2010-p2/tentor/thomas/tenta-2010-05-28/tenta-2010-05-28.html

Fasit her:

http://aass.oru.se/~tpy/c/2009-2010-p2/tentor/thomas/tenta-2010-05-28/losningar-2010-05-28.html

Det gjelder oppgave 6

 

Koden jeg har laget så langt gir meg ../src/oving1.c:13: error: expected ‘)’ before ‘*’ token, og jeg klarer ikke å finne en løsning på det, vi er flere som sitter her og ikke finner svaret.

Det er skrevet i ecplise, med default header lengst opp.

 

/*
============================================================================
Name        : oving1.c
Author      : Michael
Version     :
Copyright   : Your copyright notice
Description : Hello World in C, Ansi-style
============================================================================
*/

#include <stdio.h>

void las_radio(radio *rp) {
   printf("Ange radions effekt: ");
   scanf("%f", &rp->effekt);
   printf("Ange frekvens: ");
   scanf("%f", &rp->frekvens);
   printf("Ange känslighet: ");
   scanf("%f", &rp->kanslighet);
   printf("Ange latitud: ");
   scanf("%f", &rp->latitude);
   printf("Ange longitud: ");
   scanf("%f", &rp->longtitude);
}

int main()
{
struct radio {
	double effekt;
	double frekvens;
	double kanslighet;
	double latitude;
	double longtitude;
};

struct radio radio2;
las_radio(&radio2);

struct radio r1; //Kan også skrives = {1.5, 75.95, 0.13, 59.25393, 15.24727}
r1.effekt = 1.5;
r1.frekvens = 75.95;
r1.kanslighet = 0.13;
r1.latitude = 59.25393;
r1.longtitude = 15.24727;

printf("Effekt: %.1f W", r1.effekt);
printf("\nFrekvens: %.2f MHz", r1.frekvens);
printf("\nKänslighet: %.2f", r1.kanslighet);
printf("\nPosition: lat %.5f", r1.latitude);
printf(", long: %.5f", r1.longtitude);
printf("Effekt: %.1f W", r1.effekt);
}

 

EDIT: Problemet var en feilplassering av struct. Men har nytt problem:

Når jeg har doubles i structen, så nekter den å ta i mot info, men om jeg skifter til float fungerer det.

Endret av Flimzes
Lenke til kommentar
Videoannonse
Annonse

 

/*
============================================================================
Name        : oving1.c
Author      : Michael
Version     :
Copyright   : Your copyright notice
Description : Hello World in C, Ansi-style
============================================================================
*/

#include <stdio.h>

void las_radio(radio *rp) {
   printf("Ange radions effekt: ");
   scanf("%f", &rp->effekt);
   printf("Ange frekvens: ");
   scanf("%f", &rp->frekvens);
   printf("Ange känslighet: ");
   scanf("%f", &rp->kanslighet);
   printf("Ange latitud: ");
   scanf("%f", &rp->latitude);
   printf("Ange longitud: ");
   scanf("%f", &rp->longtitude);
}

int main()
{
struct radio {
	double effekt;
	double frekvens;
	double kanslighet;
	double latitude;
	double longtitude;
};

struct radio radio2;
las_radio(&radio2);

struct radio r1; //Kan også skrives = {1.5, 75.95, 0.13, 59.25393, 15.24727}
r1.effekt = 1.5;
r1.frekvens = 75.95;
r1.kanslighet = 0.13;
r1.latitude = 59.25393;
r1.longtitude = 15.24727;

printf("Effekt: %.1f W", r1.effekt);
printf("\nFrekvens: %.2f MHz", r1.frekvens);
printf("\nKänslighet: %.2f", r1.kanslighet);
printf("\nPosition: lat %.5f", r1.latitude);
printf(", long: %.5f", r1.longtitude);
printf("Effekt: %.1f W", r1.effekt);
}

 

EDIT: Problemet var en feilplassering av struct. Men har nytt problem:

Når jeg har doubles i structen, så nekter den å ta i mot info, men om jeg skifter til float fungerer det.

 

Jeg fant feilen, feilen er at du bare registrer floats med %f. Hvis du har lyst til doubles så må du bruke %lf. Jeg fant også en del "warnings". Du kan få bort advarslene ved å bruke scanf_s() istedenfor scanf(). :thumbup:

 

-Tapped

Endret av Tapped
Lenke til kommentar
  • 3 uker senere...

Jeg fant feilen, feilen er at du bare registrer floats med %f. Hvis du har lyst til doubles så må du bruke %lf. Jeg fant også en del "warnings". Du kan få bort advarslene ved å bruke scanf_s() istedenfor scanf(). :thumbup:

 

-Tapped

Det er Visual C++ extensions for å hindre buffer overflow og lignende programmeringstekniske feil. Bare overse dem, ettersom de kun gjelder Visual C++.

Endret av GeirGrusom
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...