• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

C/ C++ Programmieren - Probleme unter XCode

Rookie79

Tokyo Rose
Registriert
08.11.05
Beiträge
68
Hallo zusammen,

dieses Semeser ist es wieder soweit: Informatik2 Praktikum - Programmieren unter C++

Nun dachte ich mir: Bevor ich MS Visual C++, mit dem bei uns in der Fakultät normalerweise gearbeitet wird unter VirtualPC installiere, probier ich das doch gleich mit XCode. Soll ja eh komfortabler sein. Dachte ich...

Also ran an die erste Übung. Ich muss ein gegebenes Programm analysieren, erweitern und optimieren. Ich krieg aber nichtmal das Ausgangsprogramm zum laufen :(

Wenn ich "build & go" anklicke läuft das Programm an und fragt nach dem ersten Wert.
Wenn ich dann eine Zahl eingebe kommt folgende Fehlermeldung:

Code:
Inf2 Übung0 has exited due to signal 10 (SIGBUS).

Eigentlich sollte das aber schon laufen.
Woran könnte das denn liegen?

Noch eine zweite Frage:
Unter MS Visual konnte ich in meinem laufendes Projekt mehrere verschiedene .c Quellcode Dateien. Dann musste ich nur mit "set active file" (oder so ähnlich) dasjenige anwählen daß ich kompiliert und laufen haben wollte.
Wie geht das denn unter Xcode?
Wenn ich da ein zweites Quellcodefile eines anderen Programms (beispielsweise der nächsten Übung) anlege kompiliert er mir immer das erste file... doof...

Alternative wäre, für jede Übung ein neues Projekt anlegen. Es sollte aber doch auch möglich zu sein die files alle in einem Projekt handeln zu können, oder...?

Danke schonmal für Eure Hilfe!
 

patz

Châtaigne du Léman
Registriert
15.11.05
Beiträge
819
Dein Programm greift wohl auf einen Speicherbereich zu, der ungültig ist - Bug im Programm, unsauber geschrieben?
Hast du mal den Sourcecode?
 

Rookie79

Tokyo Rose
Registriert
08.11.05
Beiträge
68
Dein Programm greift wohl auf einen Speicherbereich zu, der ungültig ist - Bug im Programm, unsauber geschrieben?

Ich werds dem Prof sagen :D :D

Glaub ich aber eher nicht...
Hier der Sourcecode

Code:
/************************************************************************\
* Dateiname:   FAHR2CEL.C
* Projekt  :   INFORMATIK II, Einfuehrung in das Programmieren in C
*              Vorlage zur 1.Uebung
*
* Kurzbeschreibung:
*    Temperatur-Umrechnung von Grad Fahrenheit in Grad Celsius mittels
*    der Formel:   TempCelsius = (5/9) * (TempFahr - 32)
*    und Bildschirmausgabe in Tabellenform, mit Parameter-Abfrage
*
* Eingabe:    Start-, Endwert u. Schrittweite f. F-Temperaturbereich 
* Ausgabe:    formatierte, zweispaltigen Tabelle von F- und C-Temperaturen
*
* Datum:     Autor:       Grund der Aenderung:
* 13.04.98   mys          Neuerstellung
\************************************************************************/

#include <stdio.h>	/* Informationen zu Ein-/Ausgabefunktionen	*/
/* der Standardbibliothek			*/

#define MAX_ANZAHL_WERTE	20	/* max. Tabellen-Laenge */


int	main(void)
{
	
	/* Vereinbarungsteil */
	
	int   minTempFahr;                /* F-Startwert */
	int   maxTempFahr;                /* F-Endwert */
	int   deltaTempFahr;              /* F-Schrittweite */
	int   TempFahr;                   /* laufender F-Temperaturwert */
	int   TempCelsius;                /* laufender C-Temperaturwert */
	int	  AnzahlWerte;                /* Anzahl der Tabellenwerte */
	
	/* Beginn des Anweisungsteils */
	/* Eingabewerte abfragen */
	
	printf("\nBerechnung einer Fahrenheit/Celsius-Umrechnungstabelle\n");
	printf(  "------------------------------------------------------\n");
	
	printf("\nStartwert in [Grad] Fahrenheit = ?   "); scanf("%f", minTempFahr);
	printf("\nEndwert in [Grad] Fahrenheit   = ?   "); scanf("%f", maxTempFahr);
	printf("\nTemperatur-Schrittweite     = ?   "); scanf("%f", deltaTempFahr);
	
	AnzahlWerte = (maxTempFahr - minTempFahr) / deltaTempFahr + 1;
	if (AnzahlWerte > MAX_ANZAHL_WERTE)
	{
		printf("\n%d sind zu viele TabellenWerte, maximal %d zulaessig !\n\n", \
			   AnzahlWerte, MAX_ANZAHL_WERTE);
		printf("\nProgrammabbruch !\n");
		return (-1); /* Return-Code von main() an das Betriebssystem: -1 = Fehler */
	}
	
	
	if (minTempFahr > maxTempFahr)
	{
		printf("\nUnzulaessige Eingabe: Endwert %d < Startwert %d !\n\n", \
			   minTempFahr, maxTempFahr);
		printf("\nProgrammabbruch !\n");
		return (-1); /* Return-Code von main() an das Betriebssystem: -1 = Fehler */
	}
	
	
	/* Vorbesetzungen fuer Startwerte */
	
	TempFahr = minTempFahr;		/* Startwert fuer TempFahr */
	printf("\nFahrenheit/Celsius-Tabelle \n\n");	/* Tabellenkopfzeile */
		   
		   /* Verarbeitung und Ausgaben */
		   
		   do					                          /* Umrechnungsformel auswerten und */
		   {                                     /* Fahrenheit-/Celsius-Werte ausgeben */
		   TempCelsius = 5 / 9 * (TempFahr - 32);
		   
		   printf("  %6d    %6d \n", TempFahr, TempCelsius);
		   /* zwei Spalten im Ganzzahlformat ausgeben */
		   
		   TempFahr = TempFahr + deltaTempFahr;
		   
		   } while (TempFahr <= maxTempFahr); 	  /* Ende der do-while-Schleife */
		   
		   
		   printf("\nProgramm wird nach beliebiger Eingabe beendet !\n");
		   getch();    /* stop vor R¸ckkehr in Debugger */
		   
		   return (0);	/* Return-Code von main() an das Betriebssystem: 0 = OK */
		   
}  /* Ende des Hauptprogramms main() */
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Bei mir meckert er:

Undefined symbols:
_getch

Und wo er recht hat, hat er recht. Wenn ich mich richtig erinnere, ist getch Teil von Borlands conio. Nimm mal lieber getchar (3).

Und wenn Du das Programm mit -Wall kompilierst siehst Du auch, woher der Bus Error kommt:

test.c: In function 'main':
test.c:42: warning: format '%f' expects type 'float *', but argument 2 has type 'int'
test.c:43: warning: format '%f' expects type 'float *', but argument 2 has type 'int'
test.c:44: warning: format '%f' expects type 'float *', but argument 2 has type 'int'

Also, in %f soll eine Variable vom Typ float gelesen werden. Du gibts im aber ein int. Das kann nicht gut gehen

Alex

EDIT: Also ja, unsauber geschrieben.
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Noch eine zweite Frage:
Unter MS Visual konnte ich in meinem laufendes Projekt mehrere verschiedene .c Quellcode Dateien. Dann musste ich nur mit "set active file" (oder so ähnlich) dasjenige anwählen daß ich kompiliert und laufen haben wollte.
Wie geht das denn unter Xcode?
Wenn ich da ein zweites Quellcodefile eines anderen Programms (beispielsweise der nächsten Übung) anlege kompiliert er mir immer das erste file... doof...

View -> Groups & Files Columns -> Target Membership anschalten. Dann kannst Du an und ausklicken.

Alex