Vai al contenuto

[Linguaggio C] Thread Richieste Aiuto


~marco

Messaggi raccomandati

Ragazzi,ho un problema con quest'altro esercizio:

"Scrivere un programma che prenda in input dalla tastiera tre diversi interi e quindi viusualizzi la somma,la media,il prodotto e il maggiore di questi numeri"

#include <stdio.h>

int main()
{
int integer1;
int integer2;
int integer3;
int somma;
int media;
int prodotto;

printf ("Inserisci tre numeri e ti dirò la loro somma,la media,il loro prodotto,il più piccolo e il più grande\n");
scanf ("%d%d%d" , &integer1 , &integer2 , &integer3);

somma = integer1 + integer2 + integer3;
printf ("La somma è %d\n" , somma);

media = (integer1 + integer2 + integer3) / 3;
printf ("La media è %d\n" , media);

prodotto = integer1 * integer2 * integer3;
printf ("Il prodotto è %d\n" , prodotto);

if (integer1 > integer2)
if (integer1 > integer3) {
printf ("Il numero più grande è il primo che hai inserito!\n");
}

if (integer2 > integer1)
if (integer2 > integer3) {
printf ("Il numero più grande è il secondo che hai inserito!\n");
}

if (integer3 > integer1)
if (integer3 > integer2) {
printf ( "Il numero più grande è il terzo che hai inserito!\n");
}

return 0;
}

Insomma è tutto giusto tranne la funzione if...

ma come diavolo faccio per dire che un numero è maggiore di altri due? :hmm:

EDIT - OK,ho risolto mettendo tutto dentro blocchi ulteriori delle prime if :rofl:

Mac Mini Core Duo 1.66 GHz

iPod Nano

RAM: 512MB

Memoria: 4GB

Hard Disk: 80GB

Colore: azzurro

Serial: YM608GJMU36

Link al commento
Condividi su altri siti

  • 2 settimane dopo...

Ragazzi,avrei una domanda ignorante,che assume i tratti di mera curiosità... :ghghgh:

io tutti i programmi che ho fatto e studiato in C sino ad ora li ho compilati da terminale,ma se volessi avviare uno di essi a partire da un'icona posta su desktop cosa dovrei fare?

MacMini Core Duo

RAM:512MB (aumentata presto ad 1GB)

Hard Disk:80GB+250GB

Link al commento
Condividi su altri siti

  • 2 settimane dopo...

Ciao a tutti,premetto che sono nuovissimo di mac visto che ho preso un macbook pro circa sette giorni fa e i primi giorni li ho passati a spulciare questo fantastico OS. Programmo in C,ho installato Xcode, avevo provato eclipse ma l'ho abbandonato perchè mi dava troppi problemi col C, quindi sono passato a Xcode...ma ... purtroppo nn so che fare :-( chi mi da una spiegazione passo passo per creare un progetto e un file (anche hello world) compilarlo e vederlo partire in una finestra? vi ringrazio anticipatamente

Link al commento
Condividi su altri siti

Allora sono alle prime armi, perdonatemi se l'errore è banale, ma non lo trovo, o per lo meno non capisco.

Inserendo una serie di bit da tastiera in binario complemento a 2, il programma dovrebbe mostrarmi il numero (nessun problema) e visualizzarmi il suo opposto. Il problema è che l'opposto me lo stampa al contrario: ad esempio il numero 11010100 mi calcola giustamente l'opposto (che dovrebbe essere 00101100) ma me lo stampa come

00110100....

Come devo fare per farmelo stampare in modo corretto? Sorry, so che sarà un cagata, ma non picchiatemi....

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   const int MAXN = 100;

   int dato[MAXN];
   int n, i, j, k, l, trovato=0, errore=0;

   printf("OPPOSTO IN CA2\n\n");

   printf("Scrivi il numero dei bit: ");
   scanf("%d", &n);

   for(i=0; i<n; i++)
   {
       printf("Inserisci il %d¦ numero: ", i+1);
       scanf("%d", &dato[i]);
       if(dato[i]!=0 || dato[i]!=1)
       {
           errore=1;
           i=n;
       }
    }

   if(errore==1)
   {
         printf("\nNon e' un numero binario!");
   }
   else
   {
       printf("\nIl numero e': ");

       for(j=0; j<n; j++)
      {
          printf("%d", dato[j]);
       }

       printf("\nIl suo opposto e': ");

       for(k=n-1; k>=0; k--)
       {   
             if(trovato==1)
             {
                  if(dato[k]==1)
                  printf("0");
                  if(dato[k]==0)
                  printf("1");
             }
             else
             {
                  if(dato[k]==0)
                  printf("0");

                  if(dato[k]==1)
                  {
                      printf("1");
                      trovato=1;
                  }
              }

        }
   } 

   printf("\n\n");

   system("pause");

}

If you want, then start to laugh

If you must, then start to cry

Be yourself don't hide Just believe in destiny

iPillo

Link al commento
Condividi su altri siti

Io avrei un altro quesito;

se voglio creare un programma che abbia la stessa interfaccia grafica di ogni software per Mac OSX che librerie devo prendere in considerazione?Manulai dove li trovo?

Ciao a tutti, non volendo aprire un'altra discussione vi chiedo un aiuto:

qualcuno sà consgiliarmi un buon manuale di c++

grazie mille anticipatemente

A dire la verità qui si parla di C,non di C++.Di C ti consiglio quello che mi hanno consigliato a me qui su questo foro:

C corso completo di programmazione

Deitel & Deitel

Apogeo

MacMini Core Duo

RAM:512MB (aumentata presto ad 1GB)

Hard Disk:80GB+250GB

Link al commento
Condividi su altri siti

:D OK mi sono spiegato male...[cut]

beh non è che ci siano stati troppi miglioramenti.

Risulti, per me, ancora piuttosto criptico:p

Se intendi comunque un alias al tuo eseguibile, basta clickare con il destro nel path dell'eseguibile, creare un collegamento e spostarlo su desktop

per le domanda posta sotto

linguaggio: objective-C

testi di riferimento:

Cocoa with Objective-C 2ed

editor: O'Reilly

autore: James Duncan Davidson & Apple Computer, Inc

ISBN 0-596-00301-3

prezzo: us $34,95

Lo trovi su ibs.it, libreriauniversitaria e gorilla.it credo

Cocoa Programming for Mac OS X 2ed

editor: Addison Wesley (ma c'è ancora? mi sembra di aver capito sia diventata una "costola" della pearson edu :D )

autore: Aaron Hillegass

ISBN 0-321-21314-9

prezzo: $44,99

reperibilità, leggi sopra

:)

ho chiuso affari con: stainer - castor

Link al commento
Condividi su altri siti

Bisogna avere PAURA di usare il goto :mad:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   const int MAXN = 100;

   int dato[MAXN];
   int n, i, trovato=0, errore=0;

   printf("OPPOSTO IN CA2\n\n");
   printf("Scrivi il numero dei bit: ");
   scanf("%d", &n);
   for(i=0; i<n; i++){
       printf("Inserisci il %d¦ numero: ", i+1);
       scanf("%d", &dato[i]);
       if(dato[i]!=0 && dato[i]!=1){
           errore=1;
           break;
       }
    }
   if(errore==1) printf("\nNon e' un numero binario!");
   else {
       printf("\nIl numero e': ");
       for(i=0; i<n; i++) printf("%d", dato[i]);
       printf("\nIl suo opposto e': ");
       for(i=n-1; i>=0; i--){   
             if(trovato==1)
             {
                  if(dato[i]==1) dato[i]=0;
                  else dato[i]=1;
             } else if(dato[i]==1) trovato = 1;
        }
      for(i = 0; i < n; i++) printf("%d", dato[i]);
   }

}

cosi' dovrebbe funzionare :mad:

Non l'ho provato, quindi provalo, pero' il concetto rimane quello :mad:

Edito per dire: L'ho provato, funziona :mad:

MacBook 2Ghz with 2GB ram + iBook G4 1.2Gzh with 512MB ram

Link al commento
Condividi su altri siti

Bisogna avere PAURA di usare il goto :P

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   const int MAXN = 100;

   int dato[MAXN];
   int n, i, trovato=0, errore=0;

   printf("OPPOSTO IN CA2\n\n");
   printf("Scrivi il numero dei bit: ");
   scanf("%d", &n);
   for(i=0; i<n; i++){
       printf("Inserisci il %d¦ numero: ", i+1);
       scanf("%d", &dato[i]);
       if(dato[i]!=0 && dato[i]!=1){
           errore=1;
           break;
       }
    }
   if(errore==1) printf("\nNon e' un numero binario!");
   else {
       printf("\nIl numero e': ");
       for(i=0; i<n; i++) printf("%d", dato[i]);
       printf("\nIl suo opposto e': ");
       for(i=n-1; i>=0; i--){   
             if(trovato==1)
             {
                  if(dato[i]==1) dato[i]=0;
                  else dato[i]=1;
             } else if(dato[i]==1) trovato = 1;
        }
      for(i = 0; i < n; i++) printf("%d", dato[i]);
   }

}

cosi' dovrebbe funzionare :(

Non l'ho provato, quindi provalo, pero' il concetto rimane quello :P

Edito per dire: L'ho provato, funziona :P

Grazie infinite! Mi stanno massacrando all'uni e per capire anche le cose più banali bisogna entrare nell'ottica: e non è semplice!

Thanks! :P

If you want, then start to laugh

If you must, then start to cry

Be yourself don't hide Just believe in destiny

iPillo

Link al commento
Condividi su altri siti

  • 3 settimane dopo...
  • 3 settimane dopo...

ho un problemino con questo programma che calcola tutti i numeri perfetti(numero la cui somma dei fattori primi è uguale a se stesso) minori o uguali a 1000...

//Numeri Perfetti 5.26 p.178 deitel&deitel C
#include<stdio.h>
#include<conio.h>

#define MAX_PERFECT 1000

void perfect(unsigned int);
int n_primo(unsigned int);

unsigned int sum=1;

main(){
  unsigned int i;

  printf("1 e' un numero perfetto\n"); 
  for(i=2; i <= MAX_PERFECT; i++){
     perfect(i);
     printf("\n---------------------------------------------\n");
  }

  getch();
  return 0;
}
//verifica se il numero è la somma dei suoi fattori(numero perfetto)
void perfect(unsigned int number){
  unsigned int k;

  for(k=2; k <= number; k++){
     if(number % k == 0){
        printf("%5d",n_primo(k) );
     }
  }
  if(sum == number)
     printf("\n%d e' un numero perfetto\n",number);
} 
//verifica che l'eventuale divisore di *number* sia un fattore primo
int n_primo(unsigned int n){

  unsigned int i=1;
  unsigned short int flag=0;

  while(flag != 2){
     if(n % i == 0 && i <= n) flag++;
     i++;
  }
  if(n == i){ sum += n; return n; }

}

la somma dei fattori primi la pongo sum=1 e poi la vado a incrementare perchè 1 è certamente divisore di ogni numero;l'ho messa come variabile globale perchè non voglio utilizzare i puntatori e deve essere accessibile alle funzioni perfect e n_primo.

la funzione perfect cerca i divisori number e invoca la funzione n_primo per controllare che questi siano fattori primi; dopodichè controlla se la somma dei fattori primi è uguale al numero e se questo è un numero perfetto lo stampa.

la funzione n_primo dovrebbe verificare che n sia divisibile solo per 1 e per se stesso e in questo caso sommare n a sum e ritornare n alla funzione perfect che lo stampa in modo che posso controllare che effettivamente il numero sia perfetto

Think Different Mean Do Different

Asta La Vista, Siempre!!!

Link al commento
Condividi su altri siti

ho modificato il codice in questo modo e ora funziona...mi viene un dubbio però...i fattori sommati devoo essere primi oppure basta che dividano il numero? perchè altrimenti nei prmi 1000 numeri ci sono solo 1 e 6 come numeri perfetti...e ciò mi sembra strano..

//Numeri Perfetti 5.26 p.178
#include<stdio.h>
#include<conio.h>

#define MAX_PERFECT 1000

void perfect(unsigned int);
int n_primo(unsigned int);

main(){
  unsigned int i;

  printf("1 e' un numero perfetto\n");
  for(i=2; i <= MAX_PERFECT; i++){
     perfect(i);
     printf("\n---------------------------------------------\n");
  }

  getch();
  return 0;
}
//verifica se il numero è la somma dei suoi fattori(numero perfetto)
void perfect(unsigned int number){
  unsigned int k;
  unsigned int sum=1;

  for(k=2; k <= number; k++){
     if(number % k == 0 && n_primo(k) != 0){
        printf("%5d",k);
        sum += k;
     }
  }
  if(sum == number)
     printf("\n%d e' un numero perfetto\n",number);
} 
//verifica che l'eventuale divisore di *number* sia un fattore primo
int n_primo(unsigned int n){

  unsigned int i=0;
  unsigned short int flag=0;

  while(flag != 2){
     i++;
     if(n % i == 0 && i <= n) flag++;
  }
  if(n == i) return n; 
  else return 0;
}

Think Different Mean Do Different

Asta La Vista, Siempre!!!

Link al commento
Condividi su altri siti

come volevasi dimostrare non sono solo i fattori primi da sommare ma tutti i divisori...

il programma si semplifica notevolmente ma...non funziona più! dov'è l'errore?

//Numeri Perfetti 5.26 p.178
#include<stdio.h>
#include<conio.h>

#define MAX_PERFECT 100

void perfect(unsigned int);

main(){
  unsigned int i;

  for(i=1; i <= MAX_PERFECT; i++){
     perfect(i);
     printf("\n---------------------------------------------\n");
  }

  getch();
  return 0;
}
//verifica se il numero è la somma dei suoi fattori(numero perfetto)
void perfect(unsigned int number){
  unsigned int k;
  unsigned int sum=0;

  for(k=1; k <= number; k++){
     if(number % k == 0 ){
        printf("%5d",k);
        sum += k;
     }
  }
  if(sum == number)
     printf("\n%d e' un numero perfetto\n",number);
}

Think Different Mean Do Different

Asta La Vista, Siempre!!!

Link al commento
Condividi su altri siti

l'errore stava qui...un stupido = ...

//verifica se il numero è la somma dei suoi fattori(numero perfetto)
void perfect(unsigned int number){
  unsigned int k;
  unsigned int sum=0;

  for(k=1; k < number; k++){
     if(number % k == 0 ){
        printf("%5d",k);
        sum += k;
     }
  }
  if(sum == number)
     printf("\n%d e' un numero perfetto\n",number);
}

Think Different Mean Do Different

Asta La Vista, Siempre!!!

Link al commento
Condividi su altri siti

  • 2 settimane dopo...

Mmm...stavo pensando ad una cosa...

ogni programma io lo eseguo tramite il terminale,giusto?Ebbene...così facendo non mi appaiono le finestre classiche di Tiger (e con ragione).

Per far si che esse appaiono devo creare un eseguibile ed utilizzare specifiche librerie? (Intendo anche solo per far apparire la scritta hello world).

Mac Mini Core Duo 1.66 GHz

iPod Nano

RAM: 512MB

Memoria: 4GB

Hard Disk: 80GB

Colore: azzurro

Serial: YM608GJMU36

Link al commento
Condividi su altri siti

XCode + Interface Builder

Guarda questo link: Introduction to Cocoa Application Tutorial

See you, :)

Grazie...mi servirà!

Altro quesito:

non ridete...

l'errore elementare dov'è?Si tratta di un trivia da terminale (con una sola domanda per il momento).

#include <stdio.h>

main ()
{
int score;
char s1;

score = 0;

printf ("Question                                                     SCORE\n");

printf ("Quando Cristoforo Colombo è approdato sulle coste americane?\n");
printf ("- 1942 \n-1492 \n-1842 \n-1634\n");

if (strcmp(s1,1942)==0)
printf ("Right! +100\n");
score = score + 100;
else 
printf ("You suck!\n");

return 0;
}

Il terminale mi dice:

Last login: Fri Feb 2 19:12:41 on ttyp1

Welcome to Darwin!

host231-246-dynamic:~ nicoloparadiso$ cd documents

host231-246-dynamic:~/documents nicoloparadiso$ gcc triviaproject.c

triviaproject.c: In function 'main':

triviaproject.c:18: error: parse error before 'else'

host231-246-dynamic:~/documents nicoloparadiso$

penso si tratti di:

score = score + 100;

ma come faccio per far aumentare di 100 il punteggio per ogni risposta esatta? :)

Mac Mini Core Duo 1.66 GHz

iPod Nano

RAM: 512MB

Memoria: 4GB

Hard Disk: 80GB

Colore: azzurro

Serial: YM608GJMU36

Link al commento
Condividi su altri siti

Ho risolto così:

#include <stdio.h>
main ()

{

int score;
int campo;
int s1;
int s2;
int s3;
int s4;
int s5;

score = 0;

printf ("Ricordati che per rispondere sarà necessario semplicemente digitare il numero della risposta:\n");
printf ("Scegli il campo del tuo TRIVIA5:\n1 PROGRAMMAZIONE\n2 MATEMATICA\n3 FISICA\n4 CHIMICA\n");
scanf ("%d" , &campo);

if (campo == 1) {
printf ("Hai scelto %d ,ossia PROGRAMMAZIONE");

printf ("Quesito:\n");
printf ("Da chi tra questi ha sviluppato il linguaggio di programmazione C:\n");
printf ("1 Nicklaus Wirth \n2 Martin Luther \n3 Martin Richards \n4 James Gosling\n");
scanf("%d", &s1);

if (s1 == 3) {
printf ("%d è giusto!Il tuo punteggio è aumentato di 100!\n" , &s1);
score = score + 100;
}
else {
printf ("%d è sbagliato!Il tuo punteggio scende di 50!\n" , &s1);
score = score - 50;
}

printf ("Una divisione per zero all'interno di un programma causa:\n");
printf ("1 Un errore fatale\n2 Nessun errore\n3 Un errore che porterà comunque a termine il programma\n4 L'esplosione del computer\n");
scanf ("%d" , &s2);

if (s2 == 1) {
printf ("%d è giusto!Il tuo punteggio è aumentato di 100!\n" , &s2);
score = score + 100;
}
else {
printf ("%d è sbagliato!Il tuo punteggio scende di 50!\n" , &s2);
score = score - 50;
}

printf ("In origine quale doveva essere il nome del linguaggio Java:\n");
printf ("1 Coffee\n2 Oak\n3 ARPA\n4 Green\n");
scanf ("%d" , &s3);

if (s3 == 2) {
printf ("%d è giusto!Il tuo punteggio è aumentato di 100!\n" , &s3);
score = score + 100;
}
else {
printf ("%d è sbagliato!Il tuo punteggio scende di 50!\n" , &s3);
score = score - 50;
}

printf ("In accordo con lo standard ANSI C,quanti caratteri sono riconosciuti validi nell'identificare una variabile:\n");
printf ("1 32\n2 35\n3 50\n4 31\n");
scanf ("%d" , &s4);

if (s4 == 4) {
printf ("%d è giusto!Il tuo punteggio è aumentato di 100!\n" , &s4);
score = score + 100;
}
else {
printf ("%d è sbagliato!Il tuo punteggio scende di 50!\n" , &s4);
score = score - 50;
}

printf ("Il C è nato dalla fusione di quali linguaggi:\n");
printf ("1 BCPL e D\n2 B e BCPL\n3 C++ e Java\n4 NERD e B\n");
scanf ("%d" , &s5);

if (s5 == 2) {
printf ("%d è giusto!Il tuo punteggio è aumentato di 100!\n" , &s5);
score = score + 100;
}
else {
printf ("%d è sbagliato!Il tuo punteggio scende di 50!\n" , &s5);
score = score - 50;
}

if (score <= 300) {
printf ("Il tuo punteggio è %d\n" , &score);
printf ("Sei una schiappa!\n");
}
else {
printf ("Il tuo punteggio è %d\n" , &score);
printf ("Sei promosso!\n");
}
}


return 0;

}  

Da notare il fatto che sono ancora ad 1/4 del codice e soprattutto che ho usato solo le funzioni a me note :D

Mac Mini Core Duo 1.66 GHz

iPod Nano

RAM: 512MB

Memoria: 4GB

Hard Disk: 80GB

Colore: azzurro

Serial: YM608GJMU36

Link al commento
Condividi su altri siti

Perchè cavolo non funziona questo programma?

#include <stdio.h>

int main()
{
int peso;
int prezzo1;
float prezzo2;
float prezzo3;
float totale;

prezzo1 = 2; 
prezzo2 = 3.50;
prezzo3 = 4.50;

printf ("Immetti il peso del pacco da spedire: ");
scanf ("%d" , &peso);

if ( peso >= 101 ) {
	printf ("Il costo totale della spedizione sarà %f" , totale);
	scanf ("%f" , &totale);
	totale = prezzo3 + 1;
}
else if (peso >= 51 ) {
	printf ("Il costo totale della spedizione sarà %f" , totale);
	scanf ("%f" , &totale);
	totale = prezzo2 + 1;
}
else {
	printf ("Il costo totale della spedizione sarà %f" , totale);
	scanf ("%f" , &totale);
	totale = prezzo1 + 1;
}

return 0;
}

Mac Mini Core Duo 1.66 GHz

iPod Nano

RAM: 512MB

Memoria: 4GB

Hard Disk: 80GB

Colore: azzurro

Serial: YM608GJMU36

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...