Anjuta

Ciao a tutti ho scritto il seguente programma in C (ancora da raffinare e concludere nella sua seconda parte) :

[code]/* -- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -- /
/

  • main.c
  • Copyright © Marco Mameli 2012 marco@MarcoMameli
  • soleqsecgrado is free software: you can redistribute it and/or modify it
  • under the terms of the GNU General Public License as published by the
  • Free Software Foundation, either version 3 of the License, or
  • (at your option) any later version.
  • soleqsecgrado is distributed in the hope that it will be useful, but
  • WITHOUT ANY WARRANTY; without even the implied warranty of
  • MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  • See the GNU General Public License for more details.
  • You should have received a copy of the GNU General Public License along
  • with this program. If not, see http://www.gnu.org/licenses/.
    */

#include <stdio.h>
#include <math.h>
int selettore;
float a,b,c;
float delta;
float sol1;
float sol2;
int main()
{
printf(“Questo programma ti sarà di aiuto per risolvere le equazioni\n”);
printf(“di secondo grado, e anche le disequazioni\n”);
printf(“seleziona inserendo il numero accanto alla scritta\n “);
printf(“1. equazione;”);
printf(“2. disequazione.”);
scanf(”%d”, &selettore);
if( selettore == 1)
{
printf (“Hai scelto di risolvere un equazione di secondo grado.”);
printf ("\n Inserisci ora i coefficenti dell’equazione separati da uno spazio\n");
printf (“ricorda di riportare il segno del coefficente come è nell’equazione”);
scanf("%f %f %f", &a, &b, &c);
delta = (bb)-(4a*c);
if (delta > 0)
{
printf(“si avranno due soluzioni.”);
goto soluzione;
}
else if (delta == 0)
{
printf(“si avranno due soluzioni coincidenti.”);
goto soluzione;
}
else
{
printf(“L’equaione non assume mai valore 0”);
goto fine;
}
soluzione:
delta = sqrt(delta);
sol1 = (-b) - (delta);
printf ("\n le soluzioni sono: %f \n %f", sol1, sol2);

}

fine: return (0);
}
[/code]
il problema che mi da anjuta e nell’struzione sqrt, non riesco a capire il perché… mi potreste aiutare, vengo da windows dove non riscontravo problemi nella programmazione C. vorrei capirre perché mi da questo ptoblema. Vorrei sapere anche se posso creare un interfaccia grafica per questo programmino visto che lo devo fare per un

mi danno problemi anche le librerie:
grphics.h
conio.h
e mo ne sto provando altre man mano. Spero che non sia qualcosa che ho dimenticato di installare. Se si fatemi sapere

Io ti consiglierei di usare un ciclo while per l’interazione con l’utente e creerei alcune funzioni, piuttosto che usare il goto, un’istruzione C oramai poco usata. Ti consiglierei piuttosto di riscriverlo così:

[code]/* -- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -- /
/

  • main.c
  • Copyright © Marco Mameli 2012 marco@MarcoMameli
  • soleqsecgrado is free software: you can redistribute it and/or modify it
  • under the terms of the GNU General Public License as published by the
  • Free Software Foundation, either version 3 of the License, or
  • (at your option) any later version.
  • soleqsecgrado is distributed in the hope that it will be useful, but
  • WITHOUT ANY WARRANTY; without even the implied warranty of
  • MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  • See the GNU General Public License for more details.
  • You should have received a copy of the GNU General Public License along
  • with this program. If not, see http://www.gnu.org/licenses/.
    */

#include <stdio.h>
#include <math.h>
int selettore;
bool loop;
float a,b,c;
float delta;
float sol1;
float sol2;

int prompt( void);
void equSec( void);
void showSol( void);

int main()
{
loop = TRUE;
while( loop != FALSE)
{
if(prompt() == 1)
{
equSec();
}
exit(0);
return 0;
}

int prompt()
{
printf(“Questo programma ti sarà di aiuto per risolvere le equazioni\n”);
printf(“di secondo grado, e anche le disequazioni\n”);
printf(“seleziona inserendo il numero accanto alla scritta\n “);
printf(“1. equazione;”);
printf(“2. disequazione.”);
scanf(”%d”, &selettore);
return selettore;
}

void equSec( void)
{
printf (“Hai scelto di risolvere un equazione di secondo grado.”);
printf ("\n Inserisci ora i coefficenti dell’equazione separati da uno spazio\n");
printf (“ricorda di riportare il segno del coefficente come è nell’equazione”);
scanf("%f %f %f", &a, &b, &c);
delta = (bb)-(4a*c);
if (delta > 0)
{
printf(“si avranno due soluzioni.”);
showSol();
break;
}
else if (delta == 0)
{
printf(“si avranno due soluzioni coincidenti.”);
showSol();
break;
}
else
{
printf(“L’equazione non assume mai valore 0”);
loop = FALSE;
break;
}
}

void showSol( void)
{
delta = sqrt(delta);
sol1 = (-b) - (delta);
printf ("\n le soluzioni sono: %f \n %f", sol1, sol2);
}[/code]

Sarà più lungo, ma certamente è più scorrevole e logico. Se poi vuoi anche usare un’interfaccia grafica, bè, allora bisogna decidere quale interfaccia usare usare. Qt, GTK? La logica dell’interazione con l’utente poi cambia, tienine conto.

come mi dici tu usando la compilazione da terminale e non da anjuta ottengo:

gcc main.c -lm -o prova main.c:23:1: error: unknown type name ‘bool’ main.c: In function ‘main’: main.c:35:8: error: ‘TRUE’ undeclared (first use in this function) main.c:35:8: note: each undeclared identifier is reported only once for each function it appears in main.c:36:16: error: ‘FALSE’ undeclared (first use in this function) main.c:42:1: warning: incompatible implicit declaration of built-in function ‘exit’ [enabled by default] main.c: In function ‘equSec’: main.c:68:4: error: break statement not within loop or switch main.c:74:4: error: break statement not within loop or switch main.c:80:3: error: break statement not within loop or switch main.c: In function ‘main’: main.c:90:1: error: expected declaration or statement at end of input

questo listato è stato costruito per quale compilatore ?

io uso gcc che leggendo sul web dicono sia l’unico per fedora poi non so.
Volevo chiedere anche questo mi aiutate a configurare alla perfezione Fedora 16 per programmare in C e C++ con un ottimo IDE e anche con un disegnatore di interfacce grafiche. E se sapete qualche guida su come posso collegare l’interfaccia grafica col programma fatto da me.

Ho usato qui Qt Creator, ma non dovrebbero esserci problemi con Anjiuta. Questo è il listato corretto, prima non avevo sotto mano un compilatore C.

/* -- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -- /
/

  • main.c
  • Copyright © Marco Mameli 2012 marco@MarcoMameli
  • soleqsecgrado is free software: you can redistribute it and/or modify it
  • under the terms of the GNU General Public License as published by the
  • Free Software Foundation, either version 3 of the License, or
  • (at your option) any later version.
  • soleqsecgrado is distributed in the hope that it will be useful, but
  • WITHOUT ANY WARRANTY; without even the implied warranty of
  • MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  • See the GNU General Public License for more details.
  • You should have received a copy of the GNU General Public License along
  • with this program. If not, see http://www.gnu.org/licenses/.
    */

#include <stdio.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdlib.h>
#include <math.h>
#include <float.h>

int selettore;
int loop;
float a,b,c;
float delta;
float sol1;
float sol2;

int prompt( void);
void equSec( void);
void showSol( void);

int main()
{
loop = true;
while( loop != true)
{
if(prompt() == 1)
{
equSec();
}
exit(0);
return 0;
}
}

int prompt( void)
{
printf(“Questo programma ti sarà di aiuto per risolvere le equazioni\n”);
printf(“di secondo grado, e anche le disequazioni\n”);
printf(“seleziona inserendo il numero accanto alla scritta\n “);
printf(“1. equazione;”);
printf(“2. disequazione.”);
scanf(”%d”, &selettore);
return selettore;
}

void equSec( void)
{
printf (“Hai scelto di risolvere un equazione di secondo grado.”);
printf ("\n Inserisci ora i coefficenti dell’equazione separati da uno spazio\n");
printf (“ricorda di riportare il segno del coefficente come è nell’equazione”);
scanf("%f %f %f", &a, &b, &c);
delta = (bb)-(4a*c);
if (delta > 0)
{
printf(“si avranno due soluzioni.”);
showSol();
}
else if (delta == 0)
{
printf(“si avranno due soluzioni coincidenti.”);
showSol();
}
else
{
printf(“L’equazione non assume mai valore 0”);
loop = false;
}
}

void showSol( void)
{
delta = sqrt(delta);
sol1 = (-b) - (delta);
printf ("\n le soluzioni sono: %f \n %f", sol1, sol2);
}

per favore potresti spiegarmi come configurare fedora 16 per la programmazione in C, perché ne ho bisogno per il mio prossimo esame, e ancora ho dei problemi nel compilare alcuni applicativi :frowning:
come faccio a sapere quello che ho installato riguardo al C e poi di seguito rimuoverlo tutto e quindi riconfigurarlo da 0?
vorrei utilizzare le librerie qt per le interfacce grafiche, funzionano con GNOME?

IDE per C/C++ sotto Fedora 16? Anjiuta, KDevelop ( come plugin), Code::Block, Qt Creator, QDevelop, MonkeyStudio, Eclipse ( come plugin), NetBeans ( come plugin). Disegnatore di interfaccie grafiche per programmi in C/C++: Qt Designer e Glade. Consiglio: scaricati tutta la documentazione delle varie API, aiuta. Tutti i pacchetti *-devel e *-doc. Ovviamente usando yum o Apper.

dove la trovo la documentazione per le qt e per creare interfacce grafiche per gnome 3? mi daresti i linck?
e i pacchetti devel e doc dove li trovo?

@MarcoM
Con calma, non inserire un messaggio dietro l’altro a distanza di poco tempo.

Fedora è una distribuzione fantastica per gli sviluppatori. Praticamente sono pacchettizzati i maggiori software e librerie necessarie per lo sviluppo. Inoltre è facilmente estensibile. Principalmente il compilatore che si usa è gcc. Come per tutti i progetti di software libero. Ne esistono anche altri.

Hai già installato gli strumenti di sviluppo?

# yum groupinstall "Strumenti di sviluppo"

?

Programmi Qt che funzionano sotto GNOME? Non ci son problemi di sorta, l’importante è che siano installate le librerie. Non occorre riconfigurare da zero, avviene tutto in automatico, miracoli possibili con yum ed i pacchetti RPM. Visto che sei alle prima armi usa Apper per l’installazione dei programmi. Considerando che vuoi usare le librerie Qt gli IDE si riducono a: KDevelop, Qt Creator, QDevelop e MonkeyStudio, mentre il visual designer è Qt Designer. Anjiuta è pensato per C/C++ e GNOME.

Scusa e Vim dove lo lasci?

ok mi scuso per i messaggi uno dietro l’altro. Ora rimuovo tutto il software nella lista programmazione e poi installeto strumenti di sviluppo grazie mille per i cosngili :slight_smile:

Scusa, ma che diavolo significa: " Ora rimuovo tutto il software nella lista programmazione e poi installeto strumenti di sviluppo grazie mille per i cosngili "? Qui poi ci sono un bel po’ di errori di grammatica…

scusate per la grammatica. Ho appena finito di installare tutto l’ambiente qt.
mi spieghereste come faccio ora a creare la mia applicazione velocemente?
creando un progetto lui nel file main.qml mi riporta:

[code]import QtQuick 1.0

Rectangle {
width: 360
height: 360
Text {
text: qsTr(“Hello World”)
anchors.centerIn: parent
}
MouseArea {
anchors.fill: parent
onClicked: {
Qt.quit();
}
}
}[/code]
dove vado a scrivere la mia applicazione in C?

ti consiglio la lettura di un buon manuale di C come ad esempio quelli scritti da Deitel & Deitel.

ti ringrazio. Quel manuale da te nominamo mi dovrebbe arrivare domani o lunedì :slight_smile:
e lo userò per fondamenti di informatica all’università. cmq sto usando anche questo tutorial:
http://www.digitalfanatics.org/projects/qt_tutorial/it/last.html

speri si possano mettere i linck :slight_smile:

perché vuoi usare una ide ?
all’inizio è meglio usare la linea di comando.

si si e quello che farò ma così posso imparare contemporaneamente sia per la linea di comando che con IDE e GUI :slight_smile: