Annuncio

Collapse
No announcement yet.

Programmare in C++

Collapse
X
 
  • Filter
  • Ora
  • Show
Clear All
new posts

  • #16
    Originariamente Scritto da Darkito Visualizza Messaggio
    Certo, quando ci sono le divisioni si deve sempre evitare che si faccia una divisione per zero, il controllo è d'obbligo.
    Riguardo a come utilizza la variabile ok, lui ha deciso di fare in quel modo, si poteva fare anche continuando il loop fino a che ok==0, ovviamente cambiando inizializzazione di ok e tutto quello che ci sta dentro il ciclo. L'algoritmo non è uno solo, bensì ci sono infiniti modi per realizzare un programma.
    No, intendevo che while(ok) a quale condizione corrisponde?

    perchè lo hai detto tu che sei ogni sapiente

    Comment


    • #17
      Originariamente Scritto da Smallman_647 Visualizza Messaggio
      No, intendevo che while(ok) a quale condizione corrisponde?
      ah....corrisponde a while(ok!=0)

      sigpic
      Max Pezzali Mania
      ---> http://www.maxpezzalimania.it

      Comment


      • #18
        Approfitto del topic.
        C'è un modo per sapere (sempre in C) il numero di righe di un file di testo?
        sigpic

        Comment


        • #19
          Originariamente Scritto da Albyx Visualizza Messaggio
          Approfitto del topic.
          C'è un modo per sapere (sempre in C) il numero di righe di un file di testo?
          File di testo o testo del programma?
          sigpic

          stupid sexy greedo butt

          Comment


          • #20
            Originariamente Scritto da Black Ghost Visualizza Messaggio
            File di testo o testo del programma?
            File di testo .txt esterno.
            sigpic

            Comment


            • #21
              Allora non ne ho idea.
              sigpic

              stupid sexy greedo butt

              Comment


              • #22
                Puoi usare la funzione fgets, che immagazzina in un buffer (dichiarato in precedenza) tutti i caratteri che legge da stream (fino alla dimensione massima del buffer o fino a fine file). Dopodichè scorri il buffer e vedi quanti \n ci sono. Le righe saranno il numero di '\n' +1.
                Un programma che conta le righe è il seguente:

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

                int conta (char * filename)
                {
                int i, cont=0;
                char buffer[100];
                FILE *f=fopen(filename,"r+");
                if(!f)
                return -1;

                while(!feof(f))
                {
                fgets(buffer,100,f);
                for(i=0;buffer[i]!='\0';i++)
                if(buffer[i]=='\n')
                cont++;
                }
                return cont;
                }

                int main()
                {
                char filename[10];
                printf("\nInserisci il nome del file: ");
                scanf("%s",filename);
                printf("Nel file ci sono %d righe.",conta(filename)+1);
                }
                ~Pray, saviour\Dream, Child of Prayer\Forever and ever\Bring us peace~


                sigpic

                Comment


                • #23
                  Grazie mille Naked, ora per&#242; ho bisogno di un altro aiuto.
                  Ho fatto questo programma che dovrebbe leggere da un file "dati" (che gli passo come argomento) e da questi dati deve leggere delle righe, fare un operazione e stampare il risultato su un file esterno, che gli passo sempre come argomento:
                  La prima riga contiene un operatore (+|-|*|/)
                  La seconda riga contiene i due numeri con cui deve fare l'operazione.
                  La terza riga un altro operatore.
                  La quarta riga altri due numeri.
                  ... e cos&#236; via.

                  [CODE]//---------------------------------------------------------------------------

                  #pragma hdrstop
                  #include <stdio.h>
                  #include <conio.h>
                  #include "funzioni.h"

                  //---------------------------------------------------------------------------

                  static float a;
                  static float b;
                  static float ris;
                  static char operatore[3];

                  FILE *ingresso;
                  FILE *uscita;

                  #pragma argsused
                  int main(int argc, char* argv[])
                  {
                  int fine=0;
                  int var=1;
                  int ecc=0;
                  while(fine<4){
                  while(var==1){
                  fine++;
                  ingresso=fopen(argv[1], "r");
                  var=fscanf(ingresso,"%s",operatore);
                  if(operatore[0]=='Q'){
                  return 0;
                  }else{
                  if(operatore[0]!='+'&&operatore[0]!='-'&&operatore[0]!='*'&&operatore[0]!='/'){
                  return 0;
                  }else{
                  var=0;
                  }
                  }
                  }

                  while(var==0){
                  ecc=fscanf(ingresso, "%f %f",&a,&b);
                  if(ecc==0){
                  var=0;
                  }else{
                  if(operatore[0]=='/'&&b==0){
                  return 0;
                  }else{
                  var=1;
                  }
                  }
                  }
                  fclose(ingresso);
                  switch(operatore[0]){
                  case'+':
                  ris=somma(a,b);
                  break;
                  case'-':
                  ris=differenza(a,b);
                  break;
                  case'*':
                  ris=prodotto(a,b);
                  break;
                  case'/':
                  ris=divisione(a,b);
                  break;
                  }

                  uscita=fopen(argv[2],"w");
                  fprintf(uscita, "%f", ris);
                  }
                  fclose(uscita);



                  return 0;
                  }
                  //---------------------------------------------------------------------------

                  [/CODE]

                  Il problema &#232; che legge la riga 1, la riga 2, scrive il risultato e poi torna a leggere la riga 1 e la riga 2.
                  L'altro problema &#232; che scrive sempre sulla stessa riga.

                  Avete idea di come risolvere?

                  Scusate la nabbezza, ma ho iniziato a scrivere in C da poco e ho bisogno di molti chiarimenti
                  sigpic

                  Comment


                  • #24
                    Perch&#232; dopo aver fatto una prima operazione chiudi il file e lo riapri
                    Metti le fopen all'inizio del programma e le fclose alla fine e vedrai che funziona
                    ~Pray, saviour\Dream, Child of Prayer\Forever and ever\Bring us peace~


                    sigpic

                    Comment


                    • #25
                      Ti amo
                      sigpic

                      Comment


                      • #26
                        "Non sono gay ma posso imparare".
                        ~Pray, saviour\Dream, Child of Prayer\Forever and ever\Bring us peace~


                        sigpic

                        Comment

                        Working...
                        X