Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-06-2008, 18:18   #1
palermitanodoc
Member
 
Iscritto dal: Jul 2006
Città: Palermo
Messaggi: 258
[DELPHI] lettura file di testo

Codice:
procedure inserimento;
var x,y,i,j,z:integer;s:string;
begin
    rewrite(input);
        write('Inserisci la lunghezza delle stringhe per il ',i,chr(248),' dataset (tra 1 e 50) -> ');
        repeat
            readln(y);
            setlength(s,y);
            if (y<=0)or(y>50) then
                write('Hai inserito un numero non consentito. Inserisci un numero compreso tra 1 e 50 ->');
        until(y>0)and(y<=50);
        write('Inserisci il numero di stringhe per il ',i,chr(248),' dataset (tra 1 e 100) -> ');
        repeat
            readln(z);
            if (z<=0)or(z>100) then
                write('Hai inserito un numero non consentito. Inserisci un numero compreso tra 1 e 100 ->');
        until(z>0)and(z<=100);
        writeln(input,y,' ',z);
        writeln('Inserisci stringhe del ',i,chr(248),' dataset(devono avere lunghezza ',y,').');
        for j:=1 to z do begin
            writeln('Inserisci ',j,chr(248),' stringa: ');
            repeat
              readln(s);
              if length(s)<>y then
                  writeln('La stringa inserita non e'' valida.Deve essere di lunghezza ',y,'.');
            until length(s)=y;
            writeln(input,ansiuppercase(s));
        end;
    close(input);
end;
questa è la mia procedura di inserimento che mi dovrebbe creare un file input.txt di questo tipo

10 6
AACATGAAGG
TTTTGGCCAA
TTTGGCCAAA
GATCAGATTT
CCCGGGGGGA
ATCGATGCAT

type elemento=record
stringa:string;
grado:integer;
end;
vettore=array of elemento;

ecco ora io ora vorrei creare questo file che mi inserisca in un vettore,da me definito come sopra. Il 10 indica la lunghezza della stringa,il 6 indica il numero di stringhe. Quindi questo vettore deve essere di lunghezza 6, e contenere in ogni posizione del vettore nel record stringa,ogni stringa letta da input. come posso fare?
palermitanodoc è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2008, 18:19   #2
palermitanodoc
Member
 
Iscritto dal: Jul 2006
Città: Palermo
Messaggi: 258
ho pure provato a fare la procedura di lettura ma nn capisco dove sbaglio
Codice:
procedure leggifile(var v:vettore);
var x,y,j:integer;s:string;
begin
    reset(input);
    j:=1;
        while not eoln(input) do begin
            read(input,x,y);
            setlength(s,x);
            setlength(v,y);
        end;
        while not eof(input) do begin
            v[j].stringa:=s;
            v[j].grado:=0;
            j:=j+1;
        end;
end;
qualche buona anima pia che mi aiuti?
palermitanodoc è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2008, 21:11   #3
Tommy81
Senior Member
 
L'Avatar di Tommy81
 
Iscritto dal: Feb 2007
Messaggi: 1020
A quanto mi pare di capire sei un biologo o comunque ti occupi di genetica. Può essere semplificato l'input, nel senso che nelle tue porzioni di codice prendi carattere su carattere da tastiera... questo può rendere più veloce il tuo input ma meno leggibile (quindi più soggetto a possibili errori). Quindi, non sarebbe meglio scrivere, per es., tutta la prima stringa e poi mandare l'invio per la successiva? In lettura invece ti serve qualcosa che scorra le posizioni dei tuoi dati uno per uno oppure che stampi semplicemente sullo schermo il tuo file di testo?
Di seguito ti riporto un esempio di codice super-semplificato (non l'ho compilato accuratamente ma mi pare funzionare):
Codice:
Program Genetic;
 Var 
   input: text;
   stringa: string [80]
   i,n:byte;
 Begin
  assign (input,'C:\input.txt');
  rewrite (input);
  writeln ('Quante stringhe vuoi immettere?');
  readln (n);
  writeln ('Lunghezza di una stringa?');
  readln (m);
  writeln (input,' ',n,' ',m);
  for i:=1 to n do
   Begin
     writeln (' digita la stringa n.',i:2);
     readln (stringa);
     write (input,stringa);
     writeln (input);
   End;
  close (input);
  reset (input);
  writeln ('Questo è il file input.txt:');
  writeln;
  while not eof(input) do
    Begin
      while not eoln(input) do
        Begin
          read (input,stringa);
          readln (input);
          writeln (stringa);
        End;
    End;
  close (input);
  readln;
 End.
-il file di testo è salvato come input.txt in C:\
-nel tuo esempio n=6 (numero stringhe) e m=10 (lunghezza stringa, uguale per tutte).
-manca la funzione ansiuppercase per rendere tutto maiuscolo.
-il mio codice manca della separazione in procedure, ma ci vogliono 2 minuti per farla.


p.s. non ho capito bene cosa sia "grado" nel tuo programma.
Tommy81 è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2008, 08:52   #4
palermitanodoc
Member
 
Iscritto dal: Jul 2006
Città: Palermo
Messaggi: 258
mi dispiace deluderti ma non sono nè un biologo nè mi occupo di genetica dovrei essere un matematico =/ e il problema che ti ho postato riguarda un progetto che dovrei portare. L'esercizio mi chiede di ordinare un certo numero di stringhe(nel caso dell'esempio 6) dalla meno ordinata alla più ordinata,quindi avevo intenzione di creare un vettore di record

type elemento=record
stringa:string;
grado:integer;
end;
vettore=array of elemento;

questo vettore veniva settato di lunghezza 6,e ogni campo stringa veniva settato a lunghezza 10. Nel campo grado volevo mettere il grado di disordine della stringa appartenente per poi ordinarla...uhm spero di essermi spiegato

ora,per scrivere il file input l'ho scritto; il problema è la lettura da file.Io le stringhe non le voglio scrivere a video,ma le voglio assegnare al campo "stringa"...proprio ora ho notato che scrivendole a video le stringhe me le scrive(e quindi non è un problema di lettura ),ma se le vado ad assegnare al campo del vettore (per es. v[j].stringa:=s) ,quando avvio il programma la finestra si chiude...quindi cosa sbaglio??
palermitanodoc è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2008, 14:35   #5
palermitanodoc
Member
 
Iscritto dal: Jul 2006
Città: Palermo
Messaggi: 258
finalmente sono riuscito a risolvere il problema della lettura del file ma ora non capisco perchè non mi parte la procedura quicksort

premetto che il tipo dichiarato è il seguente:

type elemento=record
stringa:string;
grado:integer;
end;
vettore=array of elemento;

Codice:
function partition(var v:vettore;var i,f:integer):integer;
var inf,sup:integer; x:integer;
  procedure scambia(var x,y:elemento);
      var aux:elemento;
      begin
        aux:=x;
        x:=y;
        y:=aux;
      end;
begin
    x:=v[i].grado;
    inf:=i+1;
    sup:=f;
    while inf<=sup do begin
        while v[inf].grado<x do
            inf:=inf+1;
        while v[sup].grado>x do
            sup:=sup-1;
        if inf<=sup then
            scambia(v[inf],v[sup]);
    end;
    scambia(v[i],v[sup]);
    partition:=sup;
end;

procedure quicksort(var v:vettore; i,f:integer);
var m:integer;
begin
 if i<f then begin
    m:=partition(v,i,f);
    quicksort(v,i,m-1);
    quicksort(v,m+1,f);
 end;
end;
ho modificato la procedura quicksort per ordinare gli elementi dell'array in base al campo grado(un integer che rappresenta il grado di disordine della stringa)...qualcuno sarebbe così gentile da dirmi cosa c'è di sbagliato?sarà per il cervello fuso o per mia ignoranza,ma non riesco a capire perchè non parte grazie in anticipo
palermitanodoc è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
ROG Cronox: ASUS alza l'asticella dei ca...
Lenovo annuncia nuovi sistemi per la vir...
M6 e M5 Ultra, i primi benchmark conferm...
La nuova falla della cybersecurity &egra...
The Blood of Dawnwalker, il sequel potre...
Colpiti i data center Amazon: irrecupera...
Google Wallet, nuova interfaccia in arri...
iPhone Duo, problemi di produzione per i...
Firefox diventa più veloce con PDF e JPE...
WhatsApp, arriva su iOS la nuova scorcia...
Snap presenta Specs: realtà aumentata, c...
SteamOS verso un cambiamento epocale: ar...
Recensione HUAWEI FreeBuds Neo, piccoli ...
TSMC aumenta i costi di produzione: AMD ...
L'Europa sfida i magnati dei combustibil...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:00.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v